久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 27929|回復: 11
打印 上一主題 下一主題
收起左側

arduino智能紅外避障小車原理圖與源碼

  [復制鏈接]
跳轉到指定樓層
樓主



單片機源程序如下:
  1. //============================智宇科技===========================
  2. //  智能小車紅外避障實驗1(基礎避障)
  3. //===============================================================
  4. //#include <Servo.h>
  5. int Left_motor_go=8;     //左電機前進(IN1)
  6. int Left_motor_back=9;     //左電機后退(IN2)

  7. int Right_motor_go=10;    // 右電機前進(IN3)
  8. int Right_motor_back=11;    // 右電機后退(IN4)

  9. int key=7;//定義按鍵 數字7 接口
  10. int beep=12;//定義蜂鳴器 數字12 接口

  11. const int SensorRight = 3;           //右循跡紅外傳感器(P3.2 OUT1)
  12. const int SensorLeft = 4;             //左循跡紅外傳感器(P3.3 OUT2)

  13. const int SensorRight_2 = 5;           //右紅外傳感器(P3.4 OUT3)
  14. const int SensorLeft_2 = 6;     //左紅外傳感器(P3.5 OUT4)

  15. int SL;    //左循跡紅外傳感器狀態
  16. int SR;    //右循跡紅外傳感器狀態
  17. int SL_2;    //左紅外傳感器狀態
  18. int SR_2;    //右紅外傳感器狀態

  19. void setup()
  20. {
  21.   //初始化電機驅動IO為輸出方式
  22.   pinMode(Left_motor_go,OUTPUT); // PIN 8 (PWM)
  23.   pinMode(Left_motor_back,OUTPUT); // PIN 9 (PWM)
  24.   pinMode(Right_motor_go,OUTPUT);// PIN 10 (PWM)
  25.   pinMode(Right_motor_back,OUTPUT);// PIN 11 (PWM)
  26.   pinMode(key,INPUT);//定義按鍵接口為輸入接口
  27.   pinMode(beep,OUTPUT);
  28.   pinMode(SensorRight, INPUT); //定義右循跡紅外傳感器為輸入
  29.   pinMode(SensorLeft, INPUT); //定義左循跡紅外傳感器為輸入
  30.   pinMode(SensorRight_2, INPUT); //定義右紅外傳感器為輸入
  31.   pinMode(SensorLeft_2, INPUT); //定義左紅外傳感器為輸入
  32. }
  33. //=======================智能小車的基本動作=========================
  34. //void run(int time)     // 前進
  35. void run()     // 前進
  36. {
  37.   digitalWrite(Right_motor_go,HIGH);  // 右電機前進
  38.   digitalWrite(Right_motor_back,LOW);     
  39.   analogWrite(Right_motor_go,200);//PWM比例0~255調速,左右輪差異略增減
  40.   analogWrite(Right_motor_back,0);
  41.   digitalWrite(Left_motor_go,LOW);  // 左電機前進
  42.   digitalWrite(Left_motor_back,HIGH);
  43.   analogWrite(Left_motor_go,0);//PWM比例0~255調速,左右輪差異略增減
  44.   analogWrite(Left_motor_back,200);
  45.   //delay(time * 100);   //執行時間,可以調整  
  46. }

  47. void brake(int time)  //剎車,停車
  48. {
  49.   digitalWrite(Right_motor_go,LOW);
  50.   digitalWrite(Right_motor_back,LOW);
  51.   digitalWrite(Left_motor_go,LOW);
  52.   digitalWrite(Left_motor_back,LOW);
  53.   delay(time * 100);//執行時間,可以調整  
  54. }

  55. //void left(int time)         //左轉(左輪不動,右輪前進)
  56. void left()         //左轉(左輪不動,右輪前進)
  57. {
  58.   digitalWrite(Right_motor_go,HIGH);        // 右電機前進
  59.   digitalWrite(Right_motor_back,LOW);
  60.   analogWrite(Right_motor_go,200);
  61.   analogWrite(Right_motor_back,0);//PWM比例0~255調速
  62.   digitalWrite(Left_motor_go,LOW);   //左輪后退
  63.   digitalWrite(Left_motor_back,LOW);
  64.   analogWrite(Left_motor_go,0);
  65.   analogWrite(Left_motor_back,0);//PWM比例0~255調速
  66.   //delay(time * 100);        //執行時間,可以調整  
  67. }

  68. void spin_left(int time)         //左轉(左輪后退,右輪前進)
  69. {
  70.   digitalWrite(Right_motor_go,HIGH);        // 右電機前進
  71.   digitalWrite(Right_motor_back,LOW);
  72.   analogWrite(Right_motor_go,200);
  73.   analogWrite(Right_motor_back,0);//PWM比例0~255調速
  74.   digitalWrite(Left_motor_go,HIGH);   //左輪后退
  75.   digitalWrite(Left_motor_back,LOW);
  76.   analogWrite(Left_motor_go,200);
  77.   analogWrite(Left_motor_back,0);//PWM比例0~255調速
  78.   delay(time * 100);        //執行時間,可以調整   
  79. }

  80. //void right(int time)
  81. void right()        //右轉(右輪不動,左輪前進)
  82. {
  83.   digitalWrite(Right_motor_go,LOW);   //右電機后退
  84.   digitalWrite(Right_motor_back,LOW);
  85.   analogWrite(Right_motor_go,0);
  86.   analogWrite(Right_motor_back,0);//PWM比例0~255調速
  87.   digitalWrite(Left_motor_go,LOW);//左電機前進
  88.   digitalWrite(Left_motor_back,HIGH);
  89.   analogWrite(Left_motor_go,0);
  90.   analogWrite(Left_motor_back,200);//PWM比例0~255調速
  91.   //delay(time * 100);        //執行時間,可以調整  
  92. }

  93. void spin_right(int time)        //右轉(右輪后退,左輪前進)
  94. {
  95.   digitalWrite(Right_motor_go,LOW);   //右電機后退
  96.   digitalWrite(Right_motor_back,HIGH);
  97.   analogWrite(Right_motor_go,0);
  98.   analogWrite(Right_motor_back,200);//PWM比例0~255調速
  99.   digitalWrite(Left_motor_go,LOW);//左電機前進
  100.   digitalWrite(Left_motor_back,HIGH);
  101.   analogWrite(Left_motor_go,0);
  102.   analogWrite(Left_motor_back,200);//PWM比例0~255調速
  103.   delay(time * 100);        //執行時間,可以調整   
  104. }

  105. void back(int time)          //后退
  106. {
  107.   digitalWrite(Right_motor_go,LOW);  //右輪后退
  108.   digitalWrite(Right_motor_back,HIGH);
  109.   analogWrite(Right_motor_go,0);
  110.   analogWrite(Right_motor_back,150);//PWM比例0~255調速
  111.   digitalWrite(Left_motor_go,HIGH);  //左輪后退
  112.   digitalWrite(Left_motor_back,LOW);
  113.   analogWrite(Left_motor_go,150);
  114.   analogWrite(Left_motor_back,0);//PWM比例0~255調速
  115.   delay(time * 100);     //執行時間,可以調整
  116. }
  117. //==========================================================

  118. void keysacn()//按鍵掃描
  119. {
  120.   int val;
  121.   val=digitalRead(key);//讀取數字7 口電平值賦給val
  122.   while(!digitalRead(key))//當按鍵沒被按下時,一直循環
  123.   {
  124.     val=digitalRead(key);//此句可省略,可讓循環跑空
  125.   }
  126.   while(digitalRead(key))//當按鍵被按下時
  127.   {
  128.     delay(10);        //延時10ms
  129.     val=digitalRead(key);//讀取數字7 口電平值賦給val
  130.     if(val==HIGH)  //第二次判斷按鍵是否被按下
  131.     {
  132.       digitalWrite(beep,HIGH);                //蜂鳴器響
  133.       while(!digitalRead(key))        //判斷按鍵是否被松開
  134.         digitalWrite(beep,LOW);                //蜂鳴器停止
  135.     }
  136.     else
  137.       digitalWrite(beep,LOW);//蜂鳴器停止
  138.   }
  139. }

  140. void loop()
  141. {
  142.   keysacn();           //調用按鍵掃描函數
  143.   while(1)
  144.   {
  145.     //有信號為LOW  沒有信號為HIGH
  146.     SR_2 = digitalRead(SensorRight_2);
  147.     SL_2 = digitalRead(SensorLeft_2);
  148.     if (SL_2 == HIGH&&SR_2==HIGH)//前面沒有障礙物
  149.       run();   //調用前進函數
  150.     else if (SL_2 == HIGH & SR_2 == LOW)// 右邊探測到有障礙物,有信號返回,向左轉
  151.         left();//調用左轉函數
  152.     else if (SR_2 == HIGH & SL_2 == LOW) //左邊探測到有障礙物,有信號返回,向右轉  
  153.       right();//調用右轉函數
  154.     else // 都是有障礙物, 后退

  155.      {
  156.        back(3);//后退300MS
  157.        left();//調用左轉函數
  158.        delay(500);        //延時500ms
  159.      }

  160.   }
  161. }
復制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:340398 發表于 2018-5-29 11:49 | 只看該作者
很好,學習了
回復

使用道具 舉報

板凳
ID:450629 發表于 2018-12-20 11:55 | 只看該作者
這個能用嗎
回復

使用道具 舉報

地板
ID:450780 發表于 2018-12-20 15:33 | 只看該作者
學習了
回復

使用道具 舉報

5#
ID:453488 發表于 2018-12-24 15:09 | 只看該作者
謝謝大佬分享!
回復

使用道具 舉報

6#
ID:575167 發表于 2019-6-30 18:58 | 只看該作者
有電路圖嗎,大佬

回復

使用道具 舉報

7#
ID:661976 發表于 2019-12-11 21:43 | 只看該作者
3路怎么設計???
回復

使用道具 舉報

8#
ID:139783 發表于 2020-2-1 10:09 來自手機 | 只看該作者
受教了,謝謝樓主
回復

使用道具 舉報

9#
ID:269454 發表于 2020-3-4 09:25 | 只看該作者
畫上面那個圖的軟件是啥?
回復

使用道具 舉報

10#
ID:735679 發表于 2020-4-22 22:47 | 只看該作者
LYZ321520 發表于 2020-3-4 09:25
畫上面那個圖的軟件是啥?

AD Altium Designer
回復

使用道具 舉報

11#
ID:943916 發表于 2021-6-24 14:03 | 只看該作者
可不可以給下源文件啊,大佬
回復

使用道具 舉報

12#
ID:844772 發表于 2021-6-24 20:24 | 只看該作者
ddold 發表于 2021-6-24 14:03
可不可以給下源文件啊,大佬

本來四個紅外,只用了兩個,程序也過于簡單,所以車速不能快,也不適合走急彎。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品欧美 | 欧美国产精品 | 亚洲一区二区免费电影 | 午夜久久久 | 久久av一区二区三区 | 黄色在线播放视频 | 国产在线视频在线观看 | 丁香久久 | 中文字幕国产精品视频 | 久久综合亚洲 | 日日夜夜精品视频 | 欧美日韩一 | 日韩欧美在线播放 | 欧美激情第一区 | 玩丰满女领导对白露脸hd | 日韩一区二区三区视频在线播放 | 日本在线你懂的 | 欧美激情在线精品一区二区三区 | 91看片在线观看 | 九九热精品视频 | 99这里只有精品视频 | 一区二区三区国产 | 国产视频亚洲视频 | 麻豆视频在线免费观看 | 玖玖在线精品 | 欧美成人精品一区二区男人看 | 成人国产精品久久 | 三级黄视频在线观看 | 国产日韩欧美二区 | 亚洲一区 中文字幕 | 日本 欧美 国产 | 日韩电影免费在线观看中文字幕 | 香蕉视频一区二区 | 亚洲精品一区二区冲田杏梨 | 亚洲精品久久久久国产 | 欧美精品一区二区在线观看 | 台湾佬久久| 尤物在线精品视频 | se婷婷| 国产农村妇女精品一二区 | ririsao久久精品一区 |