找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2689|回复: 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. }
复制代码

评分

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

查看全部评分

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

使用道具 举报

沙发
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 单片机教程网

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