Está en la página 1de 4

// Conexiones

int pwma = 3;

int pwmb = 5;

int ai1 = 2;

int ai2 = 4;

int bi1 = 6;

int bi2 = 7;

int LED = 13;

// Variables

int lectura_linea_derecha = 0;

int lectura_linea_izquierda = 0;

int lectura_distancia_derecha = 0;

int lectura_distancia_izquierda = 0;

// Inicialización

void setup() {

pinMode(pwma,OUTPUT);

pinMode(pwmb,OUTPUT);

pinMode(ai1,OUTPUT);

pinMode(ai2,OUTPUT);

pinMode(bi1,OUTPUT);

pinMode(bi2,OUTPUT);

analogWrite(pwma,100);

analogWrite(pwmb,100);

// Rutina

void loop() {

lectura_linea_izquierda = analogRead(A0); // Lectura del sensor de línea


izquierdo

lectura_linea_derecha = analogRead(A1); // Lectura del sensor de línea


derecho

//Con este código eliminamos el ruido que pueda haber en las lecturas del
sensor.

int i=0;
lectura_distancia_izquierda=0;

lectura_distancia_derecha=0;

do{

lectura_distancia_izquierda = lectura_distancia_izquierda +
analogRead(A2); // Lectura de sensor de distancia izquierdo

lectura_distancia_derecha = lectura_distancia_derecha + analogRead(A3);


// Lectura de sensor de distancia derecha

i=i+1;

}while(i<16);

lectura_distancia_izquierda=lectura_distancia_izquierda/i;

lectura_distancia_derecha=lectura_distancia_derecha/i;

// ¡Detección de línea por el lado izquierdo!

if(lectura_linea_izquierda < 30){

reversa();

delay(500);

derecha();

delay(100);

adelante();

// ¡Detección de línea por el lado derecho!

if(lectura_linea_derecha < 30){

reversa();

delay(500);

izquierda();

delay(100);

adelante();

// ¡Detección de objeto por el lado izquierdo!

if(lectura_distancia_izquierda > 200){

izquierda();

delay(1000);

adelante();

}
// ¡Detección de objeto por el lado derecho!

if(lectura_distancia_derecha > 200){

derecha();

delay(1000);

adelante();

void adelante(){

digitalWrite(ai1,HIGH);

digitalWrite(ai2,LOW);

digitalWrite(bi1,HIGH);

digitalWrite(bi2,LOW);

void derecha(){

digitalWrite(ai1,LOW);

digitalWrite(ai2,HIGH);

digitalWrite(bi1,HIGH);

digitalWrite(bi2,LOW);

void izquierda(){

digitalWrite(ai1,HIGH);

digitalWrite(ai2,LOW);

digitalWrite(bi1,LOW);

digitalWrite(bi2,HIGH);

void reversa(){

digitalWrite(ai1,LOW);

digitalWrite(ai2,HIGH);

digitalWrite(bi1,LOW);

digitalWrite(bi2,HIGH);

void detener(){
digitalWrite(ai1,LOW);

digitalWrite(ai2,LOW);

digitalWrite(bi1,LOW);

digitalWrite(bi2,LOW);

También podría gustarte