arduino+esp8266寻迹小车-Arduino中文社区 - Powered by Discuz! Archiver

353529281 发表于 2021-8-18 20:46

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]
查看完整版本: arduino+esp8266寻迹小车