基于arduino设计一个程序,L298N电机驱动两轮车,三个TCRT5000循迹模块3PIN用来检测赛道,将3个红外循迹模块命名为L(左),I(中),R(右)。当L,I,R其中一个检测到赛道时,只有L,则全力左转,只有I,则全力直行,只有R,则全力右转。L和I,I和R中一对检测到赛道时该情况与上面相差不大,只是转弯力度减小即可。加入HC-SR04超声波模块当前方有人时,两轮车停止不动,SYN6288语音合成模块发出一条语音,语音内容:“请将手放在测温口前”。超过40秒播放另一条语音,语言内容是“麻烦让一让”。这时将手放在MLX90614非接触式红外测温传感器前,检测温度。当温度大于37时,控制SG90舵机顺时针转动90°,等手拿开后舵机转回原位。
时间: 2024-04-13 09:26:13 浏览: 232
这是一个基于Arduino的项目,旨在设计一个能够使用L298N电机驱动的双轮车,并通过三个TCRT5000循迹模块来检测赛道。我们将这三个红外循迹模块命名为L(左)、I(中)、R(右)。
以下是程序的实现思路:
1. 首先,需要将L298N电机驱动模块连接到Arduino,并连接两个电机用于驱动车辆的两个轮子。
2. 将三个TCRT5000循迹模块连接到Arduino的数字引脚上,分别用来检测赛道。
3. 创建一个循环,在循环中读取L、I和R的状态,并根据不同的情况控制车辆的运动。
4. 如果只有L检测到赛道,则全力左转;如果只有I检测到赛道,则全力直行;如果只有R检测到赛道,则全力右转。
5. 如果L和I、I和R中有一对同时检测到赛道,则转弯力度减小即可。
6. 加入HC-SR04超声波模块,用于检测当前方是否有人。如果有人,则停止车辆运动,并通过SYN6288语音合成模块发出一条语音指示。
7. 如果人在超过40秒后仍然在前方,则播放另一条语音,内容为“麻烦让一让”。
8. 将手放在MLX90614非接触式红外测温传感器前,检测温度。如果温度大于37度,则控制SG90舵机顺时针转动90°;当手拿开后,舵机会转回原位。
请注意,以上是程序的基本思路,你还需要根据具体的硬件连接和代码编写进行进一步的调整和实现。希望对你有所帮助!
相关问题
给我一个使用arduino,TCRT5000,l298n做的循迹小车教程
好的,以下是使用Arduino、TCRT5000和L298N模块制作循迹小车的教程:
材料:
- Arduino UNO板
- TCRT5000红外光电传感器模块
- L298N双路电机驱动模块
- 直流电机(2个)
- 小车底盘
- 面包板
- 杜邦线
- 9V电池
步骤:
1.将L298N模块的ENA和ENB引脚接到Arduino板的数字引脚9和10上,将IN1、IN2、IN3和IN4引脚分别接到数字引脚2、3、4和5上。
2.将TCRT5000模块的VCC和GND引脚接到Arduino板的5V和GND上,将OUT引脚接到数字引脚7和8上。
3.将两个直流电机的正负极分别接到L298N模块的M1和M2上。
4.将电池的正极接到L298N模块的12V接口上,将负极接到模块的GND接口上。
5.将Arduino板和模块固定在小车底盘上。
6.将两个TCRT5000模块粘在小车底盘前部分,让其对着地面。
7.将代码上传到Arduino板中,代码如下:
```
int LeftSensor = 7;
int RightSensor = 8;
int LeftMotorInput1 = 2;
int LeftMotorInput2 = 3;
int RightMotorInput3 = 4;
int RightMotorInput4 = 5;
void setup ()
{
pinMode(LeftSensor, INPUT);
pinMode(RightSensor, INPUT);
pinMode(LeftMotorInput1, OUTPUT);
pinMode(LeftMotorInput2, OUTPUT);
pinMode(RightMotorInput3, OUTPUT);
pinMode(RightMotorInput4, OUTPUT);
}
void loop ()
{
if (digitalRead(LeftSensor) == LOW && digitalRead(RightSensor) == LOW) // 循迹小车已经到了黑线上,小车前进
{
digitalWrite(LeftMotorInput1, HIGH);
digitalWrite(LeftMotorInput2, LOW);
digitalWrite(RightMotorInput3, HIGH);
digitalWrite(RightMotorInput4, LOW);
}
else if (digitalRead(LeftSensor) == HIGH && digitalRead(RightSensor) == LOW) // 循迹小车正在左转弯
{
digitalWrite(LeftMotorInput1, LOW);
digitalWrite(LeftMotorInput2, LOW);
digitalWrite(RightMotorInput3, HIGH);
digitalWrite(RightMotorInput4, LOW);
}
else if (digitalRead(LeftSensor) == LOW && digitalRead(RightSensor) == HIGH) // 循迹小车正在右转弯
{
digitalWrite(LeftMotorInput1, HIGH);
digitalWrite(LeftMotorInput2, LOW);
digitalWrite(RightMotorInput3, LOW);
digitalWrite(RightMotorInput4, LOW);
}
else if (digitalRead(LeftSensor) == HIGH && digitalRead(RightSensor) == HIGH) // 循迹小车已经到了交叉点,小车停止
{
digitalWrite(LeftMotorInput1, LOW);
digitalWrite(LeftMotorInput2, LOW);
digitalWrite(RightMotorInput3, LOW);
digitalWrite(RightMotorInput4, LOW);
}
}
```
8.将电池连接到小车底盘上,开启开关,循迹小车就可以自动行驶了。
希望上述教程可以帮助到你!
给我一个使用arduino,TCRT5000五路循迹模块,l298n做的循迹小车教程
好的,以下是使用Arduino、TCRT5000五路循迹模块和L298N驱动模块来制作循迹小车的教程:
材料清单:
- Arduino控制板 x1
- TCRT5000五路循迹模块 x1
- L298N驱动模块 x1
- 马达 x2
- 电池盒 x1
- 杜邦线若干
- 螺丝刀、钳子、螺丝若干
步骤1:连接L298N驱动模块和Arduino
先将L298N驱动模块上的2个电源接口VMS与GND分别连接至电池盒上的VCC与GND,使其供电;将驱动模块的ENA接口连至Arduino的D3口,IN1、IN2、IN3、IN4分别连接至Arduino的D4、D5、D6、D7口;
步骤2:连接循迹模块
将TCRT5000五路循迹模块的OUT口分别连接至Arduino的A0、A1、A2、A3、A4口,GND与VCC接口也分别连接上。
步骤3:连接左右马达
将左右马达的红线连接至驱动板的输出口OUT1和OUT2,其余线按接口顺序连接即可。
步骤4:编写代码
代码如下:
#include <AFMotor.h> // 调用AFMotor库
int leftSensor = A1; // 左边的TCRT5000传感器引脚
int rightSensor = A2; // 右边的TCRT5000传感器引脚
int leftMotor = 1; // 马达引脚 A
int rightMotor = 2; // 马达引脚 B
AF_DCMotor MotorA(leftMotor, MOTOR12_64KHZ); // 构造马达A
AF_DCMotor MotorB(rightMotor, MOTOR12_64KHZ); // 构造马达B
void setup() {
Serial.begin(9600);
pinMode(leftSensor, INPUT); // 左传感器
pinMode(rightSensor, INPUT); // 右传感器
}
void loop() {
int left = analogRead(leftSensor); // 左传感器的值
int right = analogRead(rightSensor); // 右传感器的值
if(left > 200 && right > 200) { // 没有检测到黑线
MotorA.setSpeed(150);
MotorB.setSpeed(150);
MotorA.run(FORWARD);
MotorB.run(FORWARD);
}
else if(left > 200 && right <200) { // 只检测到左侧黑线
MotorA.setSpeed(150);
MotorB.setSpeed(0);
MotorA.run(FORWARD);
MotorB.run(FORWARD);
}
else if(right > 200 && left < 200) { // 只检测到右侧黑线
MotorA.setSpeed(0);
MotorB.setSpeed(150);
MotorA.run(FORWARD);
MotorB.run(FORWARD);
}
delay(10);
}
步骤5:测试循迹小车
将循迹小车放在一条黑线上,按下Arduino的复位按钮,然后就可以看到小车朝着黑线的方向行驶了。
注意:
1、以上教程通过使用TCRT5000五路循迹模块来实现循迹功能,因此需要对循迹模块进行校准,保证检测到的黑线和实际的黑线一致;
2、以上马达电机的端口分别连至驱动板的OUT1和OUT2,若连接不正确会使小车逆行或者左右转方向不对。
3、以上代码仅供参考,具体实现可能因硬件、电路等差异而需要做出相应的修改。
阅读全文