欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
Arduino智能車循跡程序
[打印本頁]
作者:
jerryzls
時間:
2019-12-2 19:21
標題:
Arduino智能車循跡程序
使用arduino 控制
紅外循跡
可以自己設定參數調節速度
#define STOP 0
#define FORWARD 1
#define BACKWARD 2
#define TURNLEFT 3
#define TURNRIGHT 4
int leftMotor1 = 7;
int leftMotor2 = 8;
int rightMotor1 = 9;
int rightMotor2 = 10;
const int LeftPin1=A1;
const int LeftPin2=A2;
const int RightPin1=A3;
const int RightPin2=A4;
int leftPWM = 5; //PWM
int rightPWM = 6; //PWM
void setup() {
//尋跡模塊引腳初始化
pinMode(LeftPin1,INPUT);
pinMode(LeftPin2,INPUT);
pinMode(RightPin1,INPUT);
pinMode(RightPin2,INPUT);
pinMode(leftMotor1, OUTPUT);
pinMode(leftMotor2, OUTPUT);
pinMode(rightMotor1, OUTPUT);
pinMode(rightMotor2, OUTPUT);
pinMode(leftPWM, OUTPUT);
pinMode(rightPWM, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
tracing();
}
void motorRun(int cmd,int value){
analogWrite(leftPWM, value); //設置PWM輸出,即設置速度
analogWrite(rightPWM, value);
switch(cmd){
case FORWARD:
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
break;
case BACKWARD:
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, HIGH);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, HIGH);
break;
case TURNLEFT:
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, HIGH);
break;
case TURNRIGHT:
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, HIGH);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
break;
default:
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, LOW);
}
}
void tracing(){
int data[4];
data[0] = digitalRead(A4);
data[1] = digitalRead(A3);
data[2] = digitalRead(A2);
data[3] = digitalRead(A1);
if(!data[0]&&data[1]&&data[2]&&!data[3]){ //中間檢測到黑線
motorRun(FORWARD, 400);
}
if(data[0]&&!data[3]) //右邊檢測到黑線
{
motorRun(TURNRIGHT, 150);
}
if(!data[0] || data[3]) //左邊檢測到黑線
{
motorRun(TURNLEFT, 150);
}
if(!data[0] && !data[1] && !data[2] && !data[3]) //左右都沒有檢測到黑線
{
motorRun(BACKWARD, 100);
}
if(data[0] && data[3]) //左右都檢測到黑線是停止
{
motorRun(STOP, 0);
while(1); //需要根據情況更改
}
}
復制代碼
作者:
37656989
時間:
2020-1-29 18:09
下載學習,謝謝!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1