久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
我對一個四驅四路循跡小車的arduino源程序的詳細注釋
[打印本頁]
作者:
zzh啊
時間:
2018-8-17 15:13
標題:
我對一個四驅四路循跡小車的arduino源程序的詳細注釋
這是我對搜集到的資料進行的分析,和我自己的想法在里面,歡迎大家討論指正
arduino單片機源程序如下:
#include <Servo.h>
函數調用說明:調用servo.h里的庫函數
類似stdio.h是標準輸入輸出,常用的 printf scanf 這些輸入輸出函數 以及fopen fclose一系列的文件操作函數都是在這個頭文件里面的,所以這個最常見
#define STOP 0
#define FORWARD 1
#define BACKWARD 2
#define TURNLEFT 3
#define TURNRIGHT 4
int leftMotor1 = 16; 定義16引腳為“leftmotor”
int leftMotor2 = 17;
int rightMotor1 = 18;
int rightMotor2 = 19;
int trac1 = 10; //從車頭方向的最右邊開始排序 (傳感器)
int trac2 = 11;
int trac3 = 12;
int trac4 = 13;
int leftPWM = 5; 不是很懂
int rightPWM = 6;
Servo myServo; //舵機 應該和循跡沒什么關系
int inputPin=7; // 定義超聲波信號接收接口
int outputPin=8; // 定義超聲波信號發出接口
void setup() {
// put your setup code here, to run once:
//串口初始化
Serial.begin(9600);
//舵機引腳初始化
myServo.attach(9);
//測速引腳初始化 非必須作用
我的理解:Mode為OUTPUT的都是需要單片機自己輸出信號控制的pin引腳,INPUT的都是類似于傳感器收集信息的
pinMode(leftMotor1, OUTPUT);
配置引腳為輸出或輸出模式,它是一個無返回值函數,函數有兩個參數pin和mode,pin參數表示所要配置的引腳,mode參數表示設置的模式—INPUT(輸入)或OUTPUT(輸出)。
pinMode(leftMotor2, OUTPUT);
pinMode(rightMotor1, OUTPUT);
pinMode(rightMotor2, OUTPUT);
pinMode(leftPWM, OUTPUT);
pinMode(rightPWM, OUTPUT);
//尋跡模塊D0引腳初始化
pinMode(trac1, INPUT);
pinMode(trac2, INPUT);
pinMode(trac3, INPUT);
pinMode(trac4, INPUT);
}
void loop()
{
// put your main code here, to run repeatedly:
tracing();
是一個函數,在下面有對這個函數的定義
}
void motorRun(int cmd,int value)
應該是在定義一個函數motorRun()
{
analogWrite(leftPWM, value);
// 設置P WM輸出,即設置速度 analogWrite(pin, value) 通過PWM的方式在引腳上輸出一個模擬量,較多的應用在LED亮度控制、電機轉速控制等方面。該函數支持以下引腳:3、5、6、9、10、11。在Arduino控制板上引腳號旁邊標注~的就是可用作PWM的引腳,analogWrite函數為無返回值函數,有兩個參數pin和value,參數pin表示所要設置的引腳,只能選擇函數支持的引腳;參數value表示PWM輸出的占空比,范圍在0~255的區間,對應的占空比為0%~100%
analogWrite(rightPWM, value);
switch(cmd)
{
判斷cmd的狀態:
如果cmd==FOTWARD,輸出“FORWARD/r/n”的狀態,為LEFTMotor1設置為高電平,為leftMotor2設置為低電平,為RightMotor1設置為高電平,為RightMotor2設置為低電平
case FORWARD:
Serial.println("FORWARD"); //輸出狀態
Arduino 的輸出基本就用兩個函數 print 和 println,區別在于后者比前者多了回車換行,Serial.println(data)
從串行端口輸出數據,跟隨一個回車('r')和一個換行符('n')。這個函數所取得的值與 Serial.print()一樣。
digitalWrite(leftMotor1, HIGH);
其作用為設置引腳的輸出電壓為高\低電平。該函數無返回值,有兩個參數pin和value,pin參數表示所要設置的引腳,value參數表示輸出的電壓,HIGH為高電平,LOW為低電平。
在使用digitalWrite(pin, value)函數之前要將引腳設置為OUTPUT模式。
例:pinMode(x, OUTPUT);
其中x為引腳編號。pinMode函數用于設置引腳模式。
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
break;完成以上一系列函數后結束這個函數
case BACKWARD:
Serial.println("BACKWARD"); //輸出狀態
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, HIGH);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, HIGH);
break;
case TURNLEFT:
Serial.println("TURN LEFT"); //輸出狀態
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, HIGH);
break;
case TURNRIGHT:
Serial.println("TURN RIGHT"); //輸出狀態
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, HIGH);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
break;
default:
如果以上情況都不是,輸出STOP,所有電機輸出為低電平
Serial.println("STOP"); //輸出狀態
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, LOW);
}
}
void tracing() tracing()函數定義:上面void loop里面只有tracing這一個函數,arduino標準程序必須包含setup函數和loop函數,loop函數其實是一個循環,因為這個程序很簡單沒循環做的事情,所以循環函數為空,但必須要保留,這是arduino的語法規范。
{
int data[4];
定義一個數組data[]包含四個數據,讀取來自10.11.12.13引腳的信號存儲到這個數組中,而10.11.12.13引腳連接的就是四個傳感器,因此這個數組的功能就是記錄四個傳感器的信號,由下面的程序可以知道,通過對這幾個傳感器信號的判斷,并根據這幾個不同的情況作出不同的反應
data[0] = digitalRead(10);
data[1] = digitalRead(11);
data[2] = digitalRead(12);
data[3] = digitalRead(13);
if(!data[0] && !data[1] && !data[2] && !data[3]) //左右都沒有檢測到黑線
{
motorRun(FORWARD, 200);
}
if(data[0] || data[1]) //右邊檢測到黑線
{
motorRun(TURNRIGHT, 150);
}
if(data[2] || data[3]) //左邊檢測到黑線
{
motorRun(TURNLEFT, 150);
}
if(data[0] && data[3]) //左右都檢測到黑線是停止
{
motorRun(STOP, 0);
while(1);
}
Serial.print(data[0]);
Serial.print("---");
Serial.print(data[1]);
Serial.print("---");
Serial.print(data[2]);
Serial.print("---");
Serial.println(data[3]);
}
復制代碼
所有資料51hei提供下載:
程序注釋.docx
(25.6 KB, 下載次數: 42)
2018-8-17 15:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
很愛美
時間:
2019-3-23 21:46
Arduino的16 17口在哪
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
黄色免费观看视频
|
欧美一区二区免费
|
欧美久久网
|
国产在线资源
|
国产欧美一区二区精品性色超碰
|
欧洲av网站
|
久婷婷
|
久久亚洲免费视频
|
欧美在线视频免费观看
|
欧美另类视频
|
午夜精品久久久
|
97超碰人人
|
午夜高清
|
在线综合网
|
97视频在线免费观看
|
99cao
|
日韩免费在线
|
日韩一级在线观看
|
亚洲精品一二三四
|
日韩在线不卡
|
一级看片免费视频
|
国产专区在线
|
成人在线免费av
|
亚洲视频在线免费观看
|
久操视频在线观看
|
中文字幕在线观看不卡
|
成人毛片在线
|
黄色在线免费观看视频
|
精品福利在线观看
|
中文字字幕在线
|
丰满少妇高潮在线观看
|
国产午夜一区二区
|
黄色免费网站在线观看
|
91美女网站
|
日本免费在线观看视频
|
狠狠操狠狠爱
|
黄色日本视频
|
亚洲国产91
|
国产一区在线看
|
福利视频午夜
|
91片黄在线观看
|