|
本帖最后由 353529281 于 2021-8-28 19:09 编辑
我是新手,欢迎大家指出错误和缺点,共同进步,谢谢。
小车
- /*
- 雷达壁障小车项目 20201年7月31日
- 功能:
- 超声波避障
- 材料:
- ESP8266
- L298N模块
- HC-SR04超声波模块
- 舵机SG90
- 小车底盘双电机
- 电池1块电压(6-12V)
- 注意:ESP8266控制舵机时有可能需要指定 myservo.attach(SERVOPIN,500,2500) servo加需要指定最大和最小角度的ms值。
- 作者:九洲创客
- QQ:353529281
- */
- #include <HCSR04.h> //超声波测距库
- #include <Servo.h> //引用舵机库
- Servo myservo; //创建舵机对象
- #define SERVOPIN D2 //定义舵机IO脚
- UltraSonicDistanceSensor distanceSensor(D0, D1); //创建超声波对象IO脚 D0为trig D1为echo脚
- float distance,distance_left,distance_right;
- void scsr(){ //雷达检测
- distance=distanceSensor.measureDistanceCm(); //检测中间距离
- if(distance<25){ //当距离小于25CM时停止前进
- car_stop();
- myservo.write(0); //舵机左转
- delay(500);
- distance_left=distanceSensor.measureDistanceCm(); //检测左边距离
- myservo.write(180);//舵机右转
- delay(500);
- distance_right=distanceSensor.measureDistanceCm();//检测左边距离
- myservo.write(90);//舵机转回中间
- delay(500);
- if(distance_left<distance_right){ //如果左边的距离小于右边的距离,那就向左转,否则向左转
- car_right(); //右转
- delay(200);
- car_stop(); //停车
- }
- else{
- car_left(); //左转
- delay(200);
- car_stop();//停车
- }
- }
- else{
- car_up(); //前进
- }
- }
- //小车方向4个IO脚
- #define CARPIN1 D5
- #define CARPIN2 D6
- #define CARPIN3 D7
- #define CARPIN4 D8
- int car_sudu=160; //小车速度初始化为PWM160
- //四个方向,停车函数
- 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);
-
- myservo.attach(SERVOPIN,500,2500); //初始化舵机模块
- myservo.write(90); //初始舵机角度
-
- }
- void loop() {
- scsr();//执行雷达监测
- delay(100);
- }
复制代码
|
|