Proyectos

Vehículo evasor de obstáculos con sensor IR

 

Materiales Necesarios

  1. Arduino uno.
  2. Motorreductor
  3. Puente H.
  4. Sensor IR FC-51
  5. Jumpers

Diagrama de conexión: 

  • Conexión puente H.
  1. B-1A: Conexión directa a nuestra placa Arduino al pin numero 6.
  2. B-1B: Conexión directa a nuestra placa Arduino al pin numero 9.
  3. GND: Conexión a tierra(GND) de la placa Arduino.
  4. VCC: Conexión a la alimentación(5V) de la placa Arduino.
  5. A-1A: Conexión directa a nuestra placa Arduino al pin numero 10.
  6. A-1B: Conexión directa a nuestra placa Arduino al pin numero 11.

     

  • Conexión sensor IR FC-51
  1.  OUT: Conexión directa a nuestra placa Arduino al pin numero 7.
  2. GND: Conexión a tierra(GND) de la placa Arduino.
  3. VCC: Conexión a la alimentación(5V) de la placa Arduino.

     

 

 

Código funcionamiento evasor de obstáculos.

La valor de la variable velocidad puede ser modificado para disminuir o incrementar la velocidad de los motorreductores. 

 

double velocidad;
double fotocelda;
double sensor;

void fnc_dynamic_analogWrite(int _pin, int _e){
pinMode(_pin,OUTPUT);
analogWrite(_pin,_e);
}

void Avanzar() {
fnc_dynamic_analogWrite(11, (uint16_t)velocidad);
fnc_dynamic_analogWrite(9, (uint16_t)velocidad);
analogWrite(6,(uint16_t)0);
analogWrite(10,(uint16_t)0);
}
void Izquierda() {
analogWrite(11,(uint16_t)velocidad);
analogWrite(9,(uint16_t)0);
analogWrite(10,(uint16_t)0);
analogWrite(6,(uint16_t)0);
}
void Retroceder() {
fnc_dynamic_analogWrite(6, (uint16_t)velocidad);
fnc_dynamic_analogWrite(10, (uint16_t)velocidad);
analogWrite(9,(uint16_t)0);
analogWrite(11,(uint16_t)0);
}
void Derecha() {
analogWrite(6,(uint16_t)0);
fnc_dynamic_analogWrite(9, (uint16_t)velocidad);
analogWrite(11,(uint16_t)0);
analogWrite(10,(uint16_t)0);
}

int fnc_dynamic_digitalRead(int _pin){
pinMode(_pin,INPUT);
return digitalRead(_pin);
}

void Detener() {
analogWrite(9,(uint16_t)0);
analogWrite(11,(uint16_t)0);
analogWrite(10,(uint16_t)0);
analogWrite(6,(uint16_t)0);
}
void seguidor() {
fotocelda = analogRead(A0);
if ((fotocelda < 100)) {
Avanzar();
}
else if (false) {
}

}
void evasor() {
if ((digitalRead(8) == 0)) {
delay(1000);
delay(1000);
Izquierda();
delay(1000);
}
else {
Avanzar();
}

}

void setup()
{
pinMode(6, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, INPUT);

pinMode(A0, INPUT);

velocidad = 250;
sensor = 7;

}


void loop()
{

if ((fnc_dynamic_digitalRead(sensor) == 0)) {
Detener();
delay(500);
Derecha();
delay(500);
Retroceder();
delay(500);
}
else {
}

Avanzar();

}

 

 

 

 

 

Canal de YouTube

Ver canal

Vistas

610