// 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;
}