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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12442|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

我對一個四驅(qū)四路循跡小車的arduino源程序的詳細(xì)注釋

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:320288 發(fā)表于 2018-8-17 15:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是我對搜集到的資料進行的分析,和我自己的想法在里面,歡迎大家討論指正

arduino單片機源程序如下:
  1. #include <Servo.h>  
  2. 函數(shù)調(diào)用說明:調(diào)用servo.h里的庫函數(shù)
  3. 類似stdio.h是標(biāo)準(zhǔn)輸入輸出,常用的 printf scanf 這些輸入輸出函數(shù) 以及fopen fclose一系列的文件操作函數(shù)都是在這個頭文件里面的,所以這個最常見

  4. #define STOP      0
  5. #define FORWARD   1
  6. #define BACKWARD  2
  7. #define TURNLEFT  3
  8. #define TURNRIGHT 4

  9. int leftMotor1 = 16;       定義16引腳為“l(fā)eftmotor”
  10. int leftMotor2 = 17;      
  11. int rightMotor1 = 18;
  12. int rightMotor2 = 19;

  13. int trac1 = 10; //從車頭方向的最右邊開始排序 (傳感器)
  14. int trac2 = 11;
  15. int trac3 = 12;
  16. int trac4 = 13;

  17. int leftPWM = 5;     不是很懂
  18. int rightPWM = 6;

  19. Servo myServo;  //舵機 應(yīng)該和循跡沒什么關(guān)系

  20. int inputPin=7;   // 定義超聲波信號接收接口
  21. int outputPin=8;  // 定義超聲波信號發(fā)出接口

  22. void setup() {
  23.   // put your setup code here, to run once:
  24.   //串口初始化
  25.   Serial.begin(9600);
  26.   //舵機引腳初始化
  27.   myServo.attach(9);
  28.   //測速引腳初始化   非必須作用
  29. 我的理解:Mode為OUTPUT的都是需要單片機自己輸出信號控制的pin引腳,INPUT的都是類似于傳感器收集信息的
  30.   pinMode(leftMotor1, OUTPUT);
  31. 配置引腳為輸出或輸出模式,它是一個無返回值函數(shù),函數(shù)有兩個參數(shù)pin和mode,pin參數(shù)表示所要配置的引腳,mode參數(shù)表示設(shè)置的模式—INPUT(輸入)或OUTPUT(輸出)。
  32.   pinMode(leftMotor2, OUTPUT);
  33.   pinMode(rightMotor1, OUTPUT);
  34.   pinMode(rightMotor2, OUTPUT);
  35.   pinMode(leftPWM, OUTPUT);
  36.   pinMode(rightPWM, OUTPUT);
  37.   //尋跡模塊D0引腳初始化
  38.   pinMode(trac1, INPUT);
  39.   pinMode(trac2, INPUT);
  40.   pinMode(trac3, INPUT);
  41.   pinMode(trac4, INPUT);
  42. }

  43. void loop()
  44. {
  45.   // put your main code here, to run repeatedly:

  46.   tracing();   
  47. 是一個函數(shù),在下面有對這個函數(shù)的定義
  48. }
  49. void motorRun(int cmd,int value)
  50.        應(yīng)該是在定義一個函數(shù)motorRun()
  51. {
  52.   analogWrite(leftPWM, value);  
  53. // 設(shè)置P WM輸出,即設(shè)置速度 analogWrite(pin, value) 通過PWM的方式在引腳上輸出一個模擬量,較多的應(yīng)用在LED亮度控制、電機轉(zhuǎn)速控制等方面。該函數(shù)支持以下引腳:3、5、6、9、10、11。在Arduino控制板上引腳號旁邊標(biāo)注~的就是可用作PWM的引腳,analogWrite函數(shù)為無返回值函數(shù),有兩個參數(shù)pin和value,參數(shù)pin表示所要設(shè)置的引腳,只能選擇函數(shù)支持的引腳;參數(shù)value表示PWM輸出的占空比,范圍在0~255的區(qū)間,對應(yīng)的占空比為0%~100%
  54.   analogWrite(rightPWM, value);
  55.   switch(cmd)
  56. {
  57. 判斷cmd的狀態(tài):
  58. 如果cmd==FOTWARD,輸出“FORWARD/r/n”的狀態(tài),為LEFTMotor1設(shè)置為高電平,為leftMotor2設(shè)置為低電平,為RightMotor1設(shè)置為高電平,為RightMotor2設(shè)置為低電平
  59.     case FORWARD:
  60.       Serial.println("FORWARD"); //輸出狀態(tài)
  61. Arduino 的輸出基本就用兩個函數(shù) print 和 println,區(qū)別在于后者比前者多了回車換行,Serial.println(data)
  62. 從串行端口輸出數(shù)據(jù),跟隨一個回車('r')和一個換行符('n')。這個函數(shù)所取得的值與 Serial.print()一樣。
  63.       digitalWrite(leftMotor1, HIGH);
  64. 其作用為設(shè)置引腳的輸出電壓為高\低電平。該函數(shù)無返回值,有兩個參數(shù)pin和value,pin參數(shù)表示所要設(shè)置的引腳,value參數(shù)表示輸出的電壓,HIGH為高電平,LOW為低電平。
  65. 在使用digitalWrite(pin, value)函數(shù)之前要將引腳設(shè)置為OUTPUT模式。
  66. 例:pinMode(x, OUTPUT);
  67. 其中x為引腳編號。pinMode函數(shù)用于設(shè)置引腳模式。

  68.       digitalWrite(leftMotor2, LOW);
  69.       digitalWrite(rightMotor1, HIGH);
  70.       digitalWrite(rightMotor2, LOW);
  71.       break;完成以上一系列函數(shù)后結(jié)束這個函數(shù)
  72.      case BACKWARD:
  73.       Serial.println("BACKWARD"); //輸出狀態(tài)
  74.       digitalWrite(leftMotor1, LOW);
  75.       digitalWrite(leftMotor2, HIGH);
  76.       digitalWrite(rightMotor1, LOW);
  77.       digitalWrite(rightMotor2, HIGH);
  78.       break;
  79.      case TURNLEFT:
  80.       Serial.println("TURN  LEFT"); //輸出狀態(tài)
  81.       digitalWrite(leftMotor1, HIGH);
  82.       digitalWrite(leftMotor2, LOW);
  83.       digitalWrite(rightMotor1, LOW);
  84.       digitalWrite(rightMotor2, HIGH);
  85.       break;
  86.      case TURNRIGHT:
  87.       Serial.println("TURN  RIGHT"); //輸出狀態(tài)
  88.       digitalWrite(leftMotor1, LOW);
  89.       digitalWrite(leftMotor2, HIGH);
  90.       digitalWrite(rightMotor1, HIGH);
  91.       digitalWrite(rightMotor2, LOW);
  92.       break;
  93.      default:
  94. 如果以上情況都不是,輸出STOP,所有電機輸出為低電平
  95.       Serial.println("STOP"); //輸出狀態(tài)
  96.       digitalWrite(leftMotor1, LOW);
  97.       digitalWrite(leftMotor2, LOW);
  98.       digitalWrite(rightMotor1, LOW);
  99.       digitalWrite(rightMotor2, LOW);
  100.   }
  101. }
  102. void tracing()            tracing()函數(shù)定義:上面void loop里面只有tracing這一個函數(shù),arduino標(biāo)準(zhǔn)程序必須包含setup函數(shù)和loop函數(shù),loop函數(shù)其實是一個循環(huán),因為這個程序很簡單沒循環(huán)做的事情,所以循環(huán)函數(shù)為空,但必須要保留,這是arduino的語法規(guī)范。
  103. {
  104.   int data[4];               
  105. 定義一個數(shù)組data[]包含四個數(shù)據(jù),讀取來自10.11.12.13引腳的信號存儲到這個數(shù)組中,而10.11.12.13引腳連接的就是四個傳感器,因此這個數(shù)組的功能就是記錄四個傳感器的信號,由下面的程序可以知道,通過對這幾個傳感器信號的判斷,并根據(jù)這幾個不同的情況作出不同的反應(yīng)
  106.   data[0] = digitalRead(10);
  107.   data[1] = digitalRead(11);
  108.   data[2] = digitalRead(12);
  109.   data[3] = digitalRead(13);

  110.   if(!data[0] && !data[1] && !data[2] && !data[3])  //左右都沒有檢測到黑線
  111.   {
  112.     motorRun(FORWARD, 200);
  113.   }

  114.   if(data[0] || data[1])  //右邊檢測到黑線
  115.   {
  116.     motorRun(TURNRIGHT, 150);
  117.   }

  118.   if(data[2] || data[3])  //左邊檢測到黑線
  119.   {
  120.     motorRun(TURNLEFT, 150);
  121.   }

  122.   if(data[0] && data[3])  //左右都檢測到黑線是停止
  123.   {
  124.     motorRun(STOP, 0);
  125.     while(1);
  126.   }

  127.   Serial.print(data[0]);
  128.   Serial.print("---");
  129.   Serial.print(data[1]);
  130.   Serial.print("---");
  131.   Serial.print(data[2]);
  132.   Serial.print("---");
  133.   Serial.println(data[3]);
  134. }
復(fù)制代碼

所有資料51hei提供下載:
程序注釋.docx (25.6 KB, 下載次數(shù): 42)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:457332 發(fā)表于 2019-3-23 21:46 | 只看該作者
Arduino的16 17口在哪
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 狠狠骚| 久久久久久天堂 | 国产激情在线 | 日韩不卡一区二区 | 中文字幕亚洲欧美日韩在线不卡 | www国产成人免费观看视频 | 99精品国自产在线观看 | 99久久免费精品国产男女高不卡 | 国产精品一区二区欧美 | 中文字幕一区二区三区精彩视频 | 国产 日韩 欧美 在线 | a黄在线观看 | 天天操天天摸天天爽 | 国产精品96久久久久久 | 亚洲成人一区二区在线 | 亚洲精品9999久久久久 | 99久久精品免费看国产免费软件 | 国产成人精品一区二区三区在线 | 中文字幕av亚洲精品一部二部 | 亚洲欧美一区二区三区国产精品 | 91精品国产日韩91久久久久久 | 欧美激情一区二区三级高清视频 | 天天影视亚洲综合网 | 亚洲精品3 | 欧美日韩精品久久久免费观看 | 国产精品99久久久久久久vr | 亚洲欧美激情精品一区二区 | 国产精品a一区二区三区网址 | 久久精品欧美一区二区三区不卡 | 免费黄色成人 | 欧美偷偷操 | 亚洲国产激情 | jav成人av免费播放 | 久久精品国产一区 | 欧美乱码精品一区二区三区 | 国产精品国产a级 | 国产区精品视频 | 国产日韩av一区二区 | 亚洲欧洲精品成人久久奇米网 | 日韩欧美精品 | 国产精品 欧美精品 |