帮我写一个四路循迹模块小车在十字路口的时候实现左转弯的代码
以下是四路循迹模块小车在十字路口的时候实现左转弯的代码:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
int leftPin = A0; // 左侧循迹传感器引脚
int rightPin = A1; // 右侧循迹传感器引脚
int middlePin = A2; // 中间循迹传感器引脚
int leftMotor1 = 5; // 左侧电机控制引脚1
int leftMotor2 = 6; // 左侧电机控制引脚2
int rightMotor1 = 9; // 右侧电机控制引脚1
int rightMotor2 = 8; // 右侧电机控制引脚2
int speed = 150; // 小车移动速度
int delayTime = 500; // 停顿时间
void setup() {
pinMode(leftPin, INPUT);
pinMode(rightPin, INPUT);
pinMode(middlePin, INPUT);
pinMode(leftMotor1, OUTPUT);
pinMode(leftMotor2, OUTPUT);
pinMode(rightMotor1, OUTPUT);
pinMode(rightMotor2, OUTPUT);
mySerial.begin(9600);
}
void loop() {
// 循迹传感器检测
int leftValue = digitalRead(leftPin);
int rightValue = digitalRead(rightPin);
int middleValue = digitalRead(middlePin);
// 如果小车在十字路口
if (leftValue == LOW && rightValue == LOW && middleValue == LOW) {
// 左转弯
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, HIGH);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
// 停顿一段时间
delay(delayTime);
// 前进
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
}
// 如果小车在直线上
else if (leftValue == HIGH && rightValue == HIGH && middleValue == LOW) {
// 前进
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
}
// 如果小车偏左
else if (leftValue == LOW && rightValue == HIGH && middleValue == HIGH) {
// 左转弯
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, HIGH);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
}
// 如果小车偏右
else if (leftValue == HIGH && rightValue == LOW && middleValue == HIGH) {
// 右转弯
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, HIGH);
}
// 如果小车偏离轨道
else {
// 停止
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, LOW);
}
}
在代码中,我们通过循迹传感器检测小车的位置,如果小车在十字路口,就执行左转弯的操作,具体操作为:
-
将左侧电机的控制引脚1置为低电平,控制引脚2置为高电平,使左侧电机逆时针转动,实现左转弯;
-
将右侧电机的控制引脚1置为高电平,控制引脚2置为低电平,使右侧电机顺时针转动;
-
停顿一段时间,等待小车左转弯完成;
-
将左侧电机的控制引脚1和控制引脚2都置为高电平,将右侧电机的控制引脚1和控制引脚2都置为高电平,使小车前进。
通过以上操作,小车就可以在十字路口完成左转弯。
原文地址: https://www.cveoy.top/t/topic/b2LM 著作权归作者所有。请勿转载和采集!