Arduino coche de seguimiento (de tres vías infrarrojo)

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
    3 En la descripción Insertar imagen aquí
  • placa de desarrollo Arduino y tarjeta de expansiónAquí Insertar imagen Descripción
    Aquí Insertar imagen Descripció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();
  }  

Aquí Insertar imagen Descripción

Publicado tres artículos originales · ganado elogios 25 · vistas 9010

Supongo que te gusta

Origin blog.csdn.net/weixin_43285027/article/details/88614947
Recomendado
Clasificación