CocheSigueLineas

 #include <BitbloqSoftwareSerial.h>


/***   Global variables and function definition  ***/

uint8_t luzderecha = 53;

uint8_t luziquierda = 51;

uint8_t infrarrojosDerecha = 47;

uint8_t infrarrojosIzquierda = 49;

uint8_t boton = 52;

uint8_t IN1izRetro = 3;

uint8_t IN2izAlante = 4;

uint8_t IN3dchRetro = 5;

uint8_t IN4dchAlante = 6;

uint8_t ENAiz = 8;

uint8_t ENBdch = 9;

bqSoftwareSerial puerto_serie(0, 1, 9600);

float voy = 0;

float izquierda = 1;

float derecha = 1;


void linea() {

    derecha = digitalRead(infrarrojosDerecha);

    izquierda = digitalRead(infrarrojosIzquierda);

//    puerto_serie.print(izquierda);

//    puerto_serie.println(derecha);

    if (izquierda == 1) {

        digitalWrite(luziquierda, HIGH);

        digitalWrite(IN3dchRetro, LOW);

        digitalWrite(IN4dchAlante, HIGH);

    }

    else if (izquierda == 0) {

        digitalWrite(luziquierda, LOW);

        digitalWrite(IN4dchAlante, LOW);

        digitalWrite(IN3dchRetro, HIGH);

    }

    if (derecha == 1) {

        digitalWrite(luzderecha, HIGH);

        digitalWrite(IN1izRetro, LOW);

        digitalWrite(IN2izAlante, HIGH);

    }

    else if (derecha == 0) {

        digitalWrite(luzderecha, LOW);

        digitalWrite(IN2izAlante, LOW);

        digitalWrite(IN1izRetro, HIGH);

    }

}



/***   Setup  ***/

void setup() {

    pinMode(luzderecha, OUTPUT);

    pinMode(luziquierda, OUTPUT);

    pinMode(infrarrojosDerecha, INPUT);

    pinMode(infrarrojosIzquierda, INPUT);

    pinMode(boton, INPUT);

    pinMode(IN1izRetro, OUTPUT);

    pinMode(IN2izAlante, OUTPUT);

    pinMode(IN3dchRetro, OUTPUT);

    pinMode(IN4dchAlante, OUTPUT);

    puerto_serie.begin(9600);

    digitalWrite(IN1izRetro, LOW);

//    digitalWrite(IN2izAlante, HIGH);

    digitalWrite(IN3dchRetro, LOW);

//    digitalWrite(IN4dchAlante, HIGH);

    pinMode(ENAiz, OUTPUT);

    pinMode(ENBdch, OUTPUT);

    analogWrite(ENAiz, 70);

    analogWrite(ENBdch, 70);

}


/***   Loop  ***/

void loop() {

    if (digitalRead(boton) == 1) {

        while (digitalRead(boton) == 1) {

            

        }

        if (voy == 0) {

            voy = 1;

        }

        else {

            voy = 0;

        }

    }

    if (voy == 0) {

        digitalWrite(IN2izAlante, LOW);

        digitalWrite(IN4dchAlante, LOW);

    }

    else {

         linea();

    }

}