arduino+esp8266寻迹小车
本帖最后由 353529281 于 2021-8-28 19:08 编辑我是新手,欢迎大家指出错误和缺点,共同进步,谢谢。
https://www.arduino.cn/data/attachment/forum/202108/18/204233orsjn2y65c1vrr6l.jpg
/*
红外如寻迹小车项目 20201年7月31日
功能:
红外寻迹功能,黑底白线,或都白底黑色。 线宽度1-2cm左右。
材料:
ESP8266或arduono
L298N模块
TCRT红外寻迹模块2个
小车底盘双电机
电池1块电压(6-12V)
注意:速度为100左右时最适合,太快容易冲出跑道
作者:九洲创客
QQ:353529281
*/
#define TCRT_L D2//左红外寻迹IO
#define TCRT_R D3//右红外寻迹IO
void tcrt(){//红外寻迹
int tcrt_l=digitalRead(TCRT_L); //左边寻迹
int tcrt_r=digitalRead(TCRT_R); //右边寻迹
bool tcrt_bool=1; //黑底白线时值为0,白底黑线时为1;
if(tcrt_l==tcrt_bool && tcrt_r==tcrt_bool){ //如果左右都识别到线就停车
car_stop();//停车
}
else if(tcrt_l==tcrt_bool){ //如果左边识别到线,就说明车身偏左,就需要向右转向
car_right();//右转
car_stop(); //停车
}
else if(tcrt_r==tcrt_bool){//如果右边识别到线,就说明车身偏右,就需要向左转向
car_left(); //左转
car_stop();//停车
}
else{
car_up();//前进
}
}
//小车方向4个IO脚
#define CARPIN1 D5
#define CARPIN2 D6
#define CARPIN3 D7
#define CARPIN4 D8
int car_sudu=100; //小车速度初始化为PWM100
//四个方向,停车函数
void car_up(){//前进
analogWrite(CARPIN1,car_sudu);
digitalWrite(CARPIN2,LOW);
analogWrite(CARPIN3,car_sudu);
digitalWrite(CARPIN4,LOW);
delay(100);
}
void car_down(){//后退
digitalWrite(CARPIN1,LOW);
analogWrite(CARPIN2,car_sudu);
digitalWrite(CARPIN3,LOW);
analogWrite(CARPIN4,car_sudu);
delay(100);
}
void car_left(){ //左转
analogWrite(CARPIN1,car_sudu);
digitalWrite(CARPIN2,LOW);
digitalWrite(CARPIN3,LOW);
analogWrite(CARPIN4,car_sudu);
delay(100);
}
void car_right(){ //右转
digitalWrite(CARPIN1,LOW);
analogWrite(CARPIN2,car_sudu);
analogWrite(CARPIN3,car_sudu);
digitalWrite(CARPIN4,LOW);
delay(100);
}
void car_stop(){ //停车
digitalWrite(CARPIN1,LOW);
digitalWrite(CARPIN2,LOW);
digitalWrite(CARPIN3,LOW);
digitalWrite(CARPIN4,LOW);
delay(100);
}
void setup() {
Serial.begin(9600);
// 初始化小车控制IO
pinMode(CARPIN1,OUTPUT);
pinMode(CARPIN2,OUTPUT);
pinMode(CARPIN3,OUTPUT);
pinMode(CARPIN4,OUTPUT);
pinMode(TCRT_L,INPUT);
pinMode(TCRT_R,INPUT);
}
void loop() {
tcrt();//执行红外寻迹
}
页:
[1]