单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:2312|回复:3
打印上一主题下一主题

基于arduino的超声波避障和循迹

[复制链接]
跳转到指定楼层
楼主
ID:825705发表于 2021-8-21 19:34|只看该作者回帖奖励
前几天搞了个arduino板,就动手做了个arduino避障小车。。下面是源码有需要的自行提取。
  1. #define leftA_PIN 16
  2. #define leftB_PIN 17
  3. #define righA_PIN 18
  4. #define righB_PIN 19
  5. int PIN_1 = 4; //从车头方向的最右边开始排序
  6. int PIN_2 = 5;
  7. int PIN_3 = 6;
  8. int PIN_4 = 7;
  9. void forward( );       //前进
  10. void back( );         //后退
  11. void turnLeftOrigin( );   //原地左
  12. void turnRightOrigin( );  //原地右
  13. void turnRightforword( ); //右前
  14. void turnLeftforword( );  //左前
  15. void turnLeftback( );     //左后
  16. void turnRightback( );   //右后
  17. void _stop();         //停车
  18. void setup()
  19. {

  20.    Serial.begin(9600); //串口波特率9600(手机端使用)
  21.   pinMode (leftA_PIN, OUTPUT); //设置引脚为输出引脚
  22.   pinMode (leftB_PIN, OUTPUT); //设置引脚为输出引脚
  23.   pinMode (righA_PIN, OUTPUT); //设置引脚为输出引脚
  24.   pinMode (righB_PIN, OUTPUT); //设置引脚为输出引脚
  25.   pinMode (PIN_1, INPUT); //设置引脚为输入引脚
  26.   pinMode (PIN_2, INPUT); //设置引脚为输入引脚
  27.   pinMode (PIN_3, INPUT); //设置引脚为输入引脚
  28. pinMode (PIN_4, INPUT); //设置引脚为输入引脚
  29. }



  30. void loop(){
  31.   int data[4];
  32.   data[0] = digitalRead(4);
  33.   data[1] = digitalRead(5);
  34.   data[2] = digitalRead(6);
  35.   data[3] = digitalRead(7);
  36.   
  37.   if((data[0]==LOW)&& (data[1]==LOW )&& (data[2]==LOW)&& (data[2]==LOW) )
  38.   {
  39.        forward();
  40.   }
  41.   
  42.    if(((data[0]==HIGH)&& (data[1]==LOW)&& (data[2]==LOW)&& (data[3]==LOW)) || ((data[0]==HIGH)&& (data[1]==HIGH)&& (data[2]==LOW)  && (data[3]==LOW)) )
  43.   {

  44.   turnLeftOrigin();
  45.   
  46.    }
  47.    if(((data[0]==LOW)&& (data[1]==LOW)&& (data[2]==HIGH)&& (data[3]==LOW)) || ((data[0]==LOW)&& (data[1]==LOW)&& (data[2]==HIGH)&& (data[3]==HIGH)) )
  48.   {
  49.   turnRightOrigin( );
  50.    }
  51.   
  52. }
  53.   
  54. /**************************************************
  55. forward子函数——前进子函数
  56. 函数功能:控制车前进
  57. **************************************************/
  58. void forward( )
  59. {
  60.   analogWrite(leftA_PIN,180);    
  61.   analogWrite(leftB_PIN,0);       //左轮前进
  62.   analogWrite(righA_PIN,180);    
  63.   analogWrite(righB_PIN,0);       //右轮前进
  64. }
  65. /**************************************************
  66. back子函数——后退子函数
  67. 函数功能:控制车后退
  68. **************************************************/
  69. void back( )
  70. {
  71.   analogWrite(leftA_PIN,0);    
  72.   analogWrite(leftB_PIN,180);       //左轮后退
  73.   analogWrite(righA_PIN,0);    
  74.   analogWrite(righB_PIN,180);       //右轮后退
  75. }
  76. /**************************************************
  77. turnLeftOrigin子函数——原地左转子函数
  78. 函数功能:控制车原地左转
  79. **************************************************/
  80. void turnLeftOrigin( )
  81. {
  82.   analogWrite(leftA_PIN,0);    
  83.   analogWrite(leftB_PIN,255);       //左轮后退
  84.   analogWrite(righA_PIN,255);    
  85.   analogWrite(righB_PIN,0);       //右轮前进
  86. }
  87. /**************************************************
  88. turnRightOrigin子函数——原地右转子函数
  89. 函数功能:控制车原地右转
  90. **************************************************/
  91. void turnRightOrigin( )
  92. {
  93.   analogWrite(leftA_PIN,255);    
  94.   analogWrite(leftB_PIN,0);       //左轮前进
  95.   analogWrite(righA_PIN,0);    
  96.   analogWrite(righB_PIN,255);     //右轮后退
  97. }
  98. /**************************************************
  99. turnRightforword子函数——右前运动子函数
  100. 函数功能:控制车右前
  101. **************************************************/
  102. void turnRightforword( )
  103. {
  104.   analogWrite(leftA_PIN,150);    
  105.   analogWrite(leftB_PIN,0);       //左轮快前进
  106.   analogWrite(righA_PIN,128);    
  107.   analogWrite(righB_PIN,0);       //右轮慢前进
  108. }
  109. /**************************************************
  110. turnLeftforword子函数——左前运动子函数
  111. 函数功能:控制车左前
  112. **************************************************/
  113. void turnLeftforword( )
  114. {
  115.   analogWrite(leftA_PIN,128);    
  116.   analogWrite(leftB_PIN,0);     //左轮慢前进
  117.   analogWrite(righA_PIN,150);    
  118.   analogWrite(righB_PIN,0);     //右轮快前进
  119. }
  120. /**************************************************
  121. turnRightforword子函数——右后运动子函数
  122. 函数功能:控制车右原地
  123. **************************************************/
  124. void turnRightback( )
  125. {
  126.   analogWrite(leftA_PIN,255);    
  127.   analogWrite(leftB_PIN,0);       //左轮慢前进
  128.   analogWrite(righA_PIN,0);    
  129.   analogWrite(righB_PIN,0);       //右轮停止
  130. }
  131. /**************************************************
  132. turnLeftforword子函数——左后运动子函数
  133. 函数功能:控制车左原地
  134. **************************************************/
  135. void turnLeftback( )
  136. {
  137.   analogWrite(leftA_PIN,0);    
  138.   analogWrite(leftB_PIN,0);       //左轮停止
  139.   analogWrite(righA_PIN,255);    
  140.   analogWrite(righB_PIN,0);       //右轮慢前进
  141. }
  142. /**************************************************
  143. stop子函数—停止子函数
  144. 函数功能:控制车停止
  145. **************************************************/
  146. void _stop( )
  147. {
  148.   analogWrite(leftA_PIN,0);    
  149.   analogWrite(leftB_PIN,0);       //左轮静止不动
  150.   analogWrite(righA_PIN,0);    
  151.   analogWrite(righB_PIN,0);       //右轮静止不动
  152. }
复制代码

评分

黑币 +20
收起理由
+ 20
共享资料的黑币奖励!

查看全部评分

沙发
ID:825705发表于 2021-8-21 19:35|只看该作者
第一次写稿没有什么经验希望大家可以提出宝贵意见。
板凳
ID:844772发表于 2021-8-23 10:15|只看该作者
是不是经常出轨啊?而且把四个红外当两个用了,处理不了直角弯啊。
地板
ID:825705发表于 2021-8-23 16:24|只看该作者
不会呀,我感觉四个更稳定些。。

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

Powered by 单片机教程网