找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1246|回复: 0
打印 上一主题 下一主题
收起左侧

基于arduino实现的玩具扫雷避障小车程序

[复制链接]
跳转到指定楼层
楼主
ID:1010019 发表于 2022-3-12 23:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /*==================================================================
  2. (1)玩具扫雷避障小车实物一个
  3. (2)研究成果介绍书一份
  4. (3)小车能够行进,在行进的过程中能够检测前方金属物品(即为雷)并提示
  5. (4)小车可以调整行进的速度
  6. (5)小车行进的过程中能够规避前方的障碍
  7. (6)小车可以循迹黑线
  8.      -------------------------------------------------------------
  9.      或者外部遥控,用lcd1602显示小车行进中排雷的总数
  10.      -------------------------------------------------------------
  11. ===================================================================*/
  12. int UltrasonicRanging(int pinnum1,int pinnum2)//超声波测距
  13. {
  14.   int readdate;
  15.   pinMode(pinnum1,OUTPUT);
  16.   pinMode(pinnum2,INPUT);
  17.   digitalWrite(pinnum1,LOW);
  18.   delayMicroseconds(2);
  19.   digitalWrite(pinnum1,HIGH);
  20.   delayMicroseconds(5);
  21.   digitalWrite(pinnum1,LOW);
  22.   readdate=pulseIn(pinnum2,HIGH);
  23.   //一个简单的测量脉冲宽度的函数,默认单位是us
  24.   readdate/=59;
  25.   return readdate;
  26. }
  27. void voice()
  28. {
  29.    for(int i=200;i<=800;i++)               //用循环的方式将频率从200HZ 增加到800HZ
  30.   {
  31.       pinMode(4,OUTPUT);
  32.       tone(4,i);                            //在四号端口输出频率
  33.       delay(3);                             
  34.    }
  35.    delay(1000);                          
  36.    for(int i=800;i>=200;i--)
  37.    {
  38.      pinMode(4,OUTPUT);
  39.      tone(4,i);
  40.      delay(6);
  41.     }
  42. }
  43. boolean InfraredRanging(int pinNumber)//红外测距
  44. {
  45.    pinMode(pinNumber, INPUT);
  46.    return digitalRead(pinNumber);
  47. }
  48. boolean MetalDetection(int pinNumber)//金属探测
  49. {
  50.    pinMode(pinNumber, INPUT);
  51.    return digitalRead(pinNumber);
  52. }
  53. void motor(char pin,char pwmpin,char state,int val)
  54. //pin、pwnpin为端口、state为该轮子的状态、val调节速度
  55. {
  56.   pinMode(pin,OUTPUT);
  57.   if (state==1)//高
  58.   {
  59.     analogWrite(pwmpin,val);
  60.     digitalWrite(pin,1);
  61.   }
  62.   else if (state==2)//低
  63.   {
  64.     analogWrite(pwmpin,val);
  65.     digitalWrite(pin,0);
  66.   }
  67.    else if (state==0)//停
  68.   {
  69.     analogWrite(pwmpin,0);
  70.     digitalWrite(pin,0);
  71.   }
  72. }
  73. void runforward(int i)//前进
  74. {
  75.   motor(4,5,1,i);
  76.   motor(7,6,1,i);
  77. }
  78. void runback(int j)//后退
  79. {
  80.   motor(4,5,2,j);
  81.   motor(7,6,2,j);
  82. }
  83. void turnL(int m) //左转
  84. {
  85.   motor(4,5,1,m);
  86.   motor(7,6,0,m);
  87. }
  88. void turnR(int n)//右转
  89. {
  90.   motor(4,5,0,n);
  91.   motor(7,6,1,n);
  92. }
  93. void stop_z()//停
  94. {
  95.   motor(4,5,0,0);
  96.   motor(7,6,0,0);
  97. }
  98. void setup() {

  99. }
  100. void run_black()//走黑线
  101. {
  102.   int num=0;//扫雷数量
  103.   bool n1,n2;  //1 左;2  右
  104.   n1=digitalRead(9);
  105.   n2=digitalRead(10);
  106.   if (MetalDetection(13))
  107.   {
  108.      voice();
  109.      num++;
  110.   }
  111.   if (UltrasonicRanging(4,5))find_obstacle();
  112.   if(n1==1&&n2==1) while(1) stop_z();//终点
  113.   if (n1==1) turnR(120);
  114.     else if (n2==1) turnL(120);
  115.       else runforward(120);
  116. }
  117. void find_obstacle()//发现障碍物
  118. {
  119.     runback(120);
  120.     delay(2000);
  121.     turnL(120);
  122.     delay(1000);
  123.     runforward(120);
  124.     delay(3000);
  125.     turnR(120);
  126.     delay(1000);
  127. }
  128. void loop()
  129. {
  130.    while(1) run_black();
  131. }
复制代码
1、项目的研究内容
  
利用各种传感器实现机器对金属的感应,从而能够有效的提醒人们能够快速寻找并识别雷及类似物,并能有效的穿过区域。
  
2、预计突破或解决哪些技术难题
  
(1)传感器如何配合运转使得机器扫雷车有效运行。
  
(2)扫雷车使用什么结构能使扫雷车有效灵活改变方向。
  
(3)加固车身结构,当地形崎岖时,运动的扫雷车如何稳定车身结构以至于不会因为与地面撞击而产生较大损坏。
  
(4)在扫雷车调试运行中,会出现一些程序问题并将其如何解决,同时如何优化程序。
  
3、研究的创新点
  
(1)利用合理地车身结构来稳定车身,不至于因转向产生晃动。
  
(2)利用超声波传感器来避开障碍物,提高扫雷车的对地形的把控。
  

评分

参与人数 1黑币 +30 收起 理由
admin + 30 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表