CocheBluetooth

 // para el mando Arduino Bluetooth Controler

// Velocidad regulable con el potenciometro y el mando

/***   Included libraries  ***/

#include <SoftwareSerial.h>


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

uint8_t luzizquierda = 51;

SoftwareSerial miBT(10, 11);

uint8_t in1izqRetro = 3;

uint8_t zumbador = 2;

const int PinTrig = 48;

const int PinEcho = 49;

uint8_t in2izqAdelante = 4;

uint8_t in3dchRetro = 5;

uint8_t in4dchAdelante = 6;

uint8_t ENAiz = 8;

uint8_t ENBdch = 9;

uint8_t boton = 52;

uint8_t luzderecha = 53;

int obstaculo = 0;

unsigned long tiempo = 0;

int valorpot = 0;

int casev = 0;

int cased = 0;

const float VelSon = 34000.0;

int velo = 80;


// macros de detector de obstaculos

void LeoTrigger()

{

  digitalWrite(PinTrig, LOW);

  delayMicroseconds(4);

  digitalWrite(PinTrig, HIGH);

  delayMicroseconds(40);

  digitalWrite(PinTrig, LOW);

  tiempo = pulseIn(PinEcho, HIGH);

  obstaculo = tiempo * 10 /292 / 2;

//  Serial.print(obstaculo);

//  Serial.print("cm con:");

//  Serial.println(tiempo);

//  delay (1000);

}


void pared() {

    LeoTrigger();

    while (obstaculo <= 10) {                     

        digitalWrite(in1izqRetro, HIGH);

        digitalWrite(in2izqAdelante, LOW);

        digitalWrite(in3dchRetro, LOW);

        digitalWrite(in4dchAdelante, HIGH);

        delay(200);

//        Serial.println(obstaculo);

        LeoTrigger();

    }

}


/***   Setup  ***/

void setup() {

    pinMode(luzizquierda, OUTPUT);

    Serial.begin(9600);

    pinMode(in1izqRetro, OUTPUT);

    pinMode(zumbador, OUTPUT);

    pinMode(in2izqAdelante, OUTPUT);

    pinMode(in3dchRetro, OUTPUT);

    pinMode(in4dchAdelante, OUTPUT);

    pinMode(boton, INPUT);

    pinMode(luzderecha, OUTPUT);

    pinMode(ENAiz, OUTPUT);

    pinMode(ENBdch, OUTPUT);

    pinMode(PinTrig, OUTPUT);

    pinMode(PinEcho, INPUT);

    analogWrite(ENAiz, velo);

    analogWrite(ENBdch, velo);

    miBT.begin(9600);

    digitalWrite(in1izqRetro, LOW);

    digitalWrite(in3dchRetro, LOW);

    digitalWrite(in2izqAdelante, LOW);

    digitalWrite(in4dchAdelante, LOW);

    digitalWrite(luzizquierda, LOW);

    digitalWrite(luzderecha, LOW);

}


/***   Loop  ***/

void loop() {

  pared();

//  velo = map(analogRead(A1), 0, 1022, 80, 250); /* potenciometro no es compatible con mando */

//  Serial.println(velo);

    if (miBT.available()){  

    valorpot = miBT.read();

   }

//    Serial.print(valorpot);


    if (valorpot < '6'){cased = valorpot;}

    if (valorpot > '5'){casev = valorpot;}

//    Serial.println(cased);

//    delay (500);

    switch (cased) {

         case '1':

            analogWrite(ENAiz, velo);

            analogWrite(ENBdch, velo);

            digitalWrite(luzizquierda, HIGH);

            digitalWrite(luzderecha, HIGH);

            digitalWrite(in1izqRetro, LOW);

            digitalWrite(in3dchRetro, LOW);

            digitalWrite(in2izqAdelante, HIGH);

            digitalWrite(in4dchAdelante, HIGH);

            break;

        case '2':

            analogWrite(ENAiz, velo);

            analogWrite(ENBdch, velo);

            digitalWrite(luzizquierda, LOW);

            digitalWrite(luzderecha, LOW);

            digitalWrite(in4dchAdelante, LOW);

            digitalWrite(in2izqAdelante, LOW);

            digitalWrite(in1izqRetro, HIGH);

            digitalWrite(in3dchRetro, HIGH);

            break;

        case '3':

            digitalWrite(luzizquierda, HIGH);

            digitalWrite(luzderecha, LOW);

            digitalWrite(in1izqRetro, HIGH);

            digitalWrite(in2izqAdelante, LOW);

            digitalWrite(in3dchRetro, LOW);

            digitalWrite(in4dchAdelante, HIGH);

            break;

        case '4':

            digitalWrite(luzizquierda, LOW);

            digitalWrite(luzderecha, HIGH);

            digitalWrite(in1izqRetro, LOW);

            digitalWrite(in3dchRetro, HIGH);

            digitalWrite(in4dchAdelante, LOW);

            digitalWrite(in2izqAdelante, HIGH);

            break;

        case '5':

            digitalWrite(luzizquierda, LOW);

            digitalWrite(luzderecha, LOW);

            digitalWrite(in1izqRetro, LOW);

            digitalWrite(in2izqAdelante, LOW);

            digitalWrite(in3dchRetro, LOW);

            digitalWrite(in4dchAdelante, LOW);

            break;

    }

      switch (casev) {

         case '6':

            analogWrite(ENAiz, velo + 30);

            analogWrite(ENBdch, velo - 30);

            break;

        case '9':

            analogWrite(ENAiz, velo - 30);

            analogWrite(ENBdch, velo + 30);

            break;

        case 'A':

            tone(zumbador, 500);

            delay(200);

            noTone(zumbador);

            break;

        case '7':

            velo = velo + 10;

            if (velo > 240) velo = 240;

            analogWrite(ENAiz, velo);

            analogWrite(ENBdch, velo);

            break;

        case '8':

            velo = velo - 10;

            if (velo < 80) velo = 90;

//            valorpot = 1;

            analogWrite(ENAiz, velo);

            analogWrite(ENBdch, velo);

            break;

    }

    Serial.print(cased);

    Serial.print(" casev=");

    Serial.print(casev);

    Serial.print(" valorpot=");

    Serial.println(valorpot);

    cased = 0;

    casev = 0;

    valorpot = 0;

}