Los sensores infrarrojos permiten al coche para viajar en las rutas especificadas
1. Materiales necesarios
- El bastidor de la cabina y la rueda (SW puede ser modelado utilizando una impresora 3D y, a continuación, el suelo de la cabina también se pueden comprar directamente en línea, cartón más barata O (∩_∩) O ~ ha)
impresión 3D Esta figura
- placa de desarrollo Arduino y tarjeta de expansión
- Tres sensores infrarrojos
- Dos engranaje de dirección de 360 grados (I estaba con servo-accionado, el motor también se puede utilizar)
- número de línea de DuPont
- Batería de litio
conjunto de módulo y puesta carro
engranaje de dirección con un depurador de código que la transferencia después de la transferencia se detiene hasta que el servo
código de referencia como sigue:
#include <Servo.h>
Servo servo; //定义舵机
void setup()
{
servo.attach(2);//舵机串口设为2
}
void loop()
{
servo.write( 360 );//舵机前转
delay(1000);
servo.write( -360 );//舵机后转
delay(1000);
servo.write( 90 );//舵机停止
delay(1000);
}
**
- códigos de seguimiento de coches
**
#include <Servo.h>
Servo servo_pin_right; //定义右驱动
Servo servo_pin_left; //定义左驱动
const int SensorLeft=19;//左红外
const int SensorMid=20;//中红外
const int SensorRight=21;//右红外
int SL;//左红外状态
int SM;//中红外状态
int SR;//右红外状态
void setup()
{
Serial.begin(9600);//初始化串口
servo_pin_right.attach(9);//右驱动串口设为9
servo_pin_left.attach(10);//左驱动串口设为10
pinMode(SensorLeft,INPUT);//定义左红外为输入
pinMode(SensorMid,INPUT);//定义中红外为输入
pinMode(SensorRight,INPUT);//定义右红外为输入
}
//===========小车基本运动===============
void car_go()//小车直行
{
servo_pin_left.write( 360 );//左轮前进
servo_pin_right.write( -360);//右轮前进
}
void car_left()//小车左转
{
servo_pin_left.write( 90);//左轮后退
servo_pin_right.write( -360 );//右轮前进
}
void car_right()//小车右转
{
servo_pin_left.write( 360 );//左轮前进
servo_pin_right.write( 90);//右轮后退
}
void car_back()//小车后退
{
servo_pin_left.write( -360 );//左轮后退
servo_pin_right.write(360 );//右轮后退
}
void car_stop()//小车停止
{
servo_pin_left.write( 90 );//左轮停止
servo_pin_right.write(90 );//右轮停止
}
void loop()
{
while(1)
{
// 有信号为LOW,没信号为HIGH
SL=digitalRead(SensorLeft);//有信号表明在白色区域,没有信号表示在黑色区域
SM=digitalRead(SensorMid);//有信号表明在白色区域,没有信号表示在黑色区域
SR=digitalRead(SensorRight);//有信号表明在白色区域,没有信号表示在黑色区域
if(SL==LOW & SR==LOW & SM==HIGH)//左右红外检测到信号,中红外没有检测到信号,小车前进
car_go();
else if( SR==HIGH & SL==LOW & SM==HIGH)//左红外检测到信号,右中红外没有检测到信号,小车右转
car_right();
else if(SL==HIGH & SR==LOW & SM==HIGH)//右红外检测到信号,左中红外没有检测到信号,小车左转
car_left();
else if(SR==LOW & SM==LOW & SL==LOW)//左右中红外检测到信号,小车后退
car_back();
else
car_stop();
}