por si alguien me lo pregunta,
este es el sckatch qye he utilizado
[b]int izqA = 5;
int izqB = 6;
int derA = 9;
int derB = 10;
int vel = 255; // Velocidad de los motores (0-255)
int estado = 'g'; // inicia detenido
int posicion = 7;
int intermitente = 8;
int pecho = 2; // define el pin 2 como (pecho) para el Ultrasonido
int ptrig = 3; // define el pin 3 como (ptrig) para el Ultrasonido
int duracion, distancia; // para Calcular distacia
void setup() {
Serial.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);
pinMode(posicion, OUTPUT);
pinMode(intermitente, OUTPUT);
pinMode(pecho, INPUT); // define el pin 2 como entrada (pecho)
pinMode(ptrig,OUTPUT); // define el pin 3 como salida (ptrig)
pinMode(13,OUTPUT); //define el pin 13 como salida para un LED que identifica que tenemos un obstaculo
}
void loop() {
if (Serial.available()>0){ // lee el bluetooth y almacena en estado
estado = Serial.read();
}
if (estado=='Q'){ // Adelante
Serial.println(estado);
analogWrite(derB, vel);
analogWrite(izqB, 0);
analogWrite(izqA, vel);
analogWrite(derA, 0);
}
if (estado=='T'){ // derecha
Serial.println(estado);
analogWrite(derB, vel);
analogWrite(izqB, vel);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
if (estado=='U'){ // parar
Serial.println(estado);
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
if (estado=='S'){ // izquierda
Serial.println(estado);
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(izqA, vel);
analogWrite(derA, vel);
}
if (estado=='R'){ // atras
Serial.println(estado);
analogWrite(derB, 0);
analogWrite(izqB, vel);
analogWrite(izqA, 0);
analogWrite(derA, vel);
}
if (estado =='V') { //Leds posicion ON
Serial.println(estado);
digitalWrite(7, HIGH);
}
if (estado == 'W') { //Leds Posicion OFF
Serial.println(estado);
digitalWrite(7, LOW);
}
if (estado == 'Y'){ //Leds intermitente ON
Serial.println(estado);
digitalWrite(8, HIGH);
}
if (estado == 'Z') { //Leds intermitente OFF
Serial.println(estado);
digitalWrite(8, LOW);
}
if (estado =='A'){ // Boton AUTOMATICO ON, se mueve midiendo distancia
digitalWrite(ptrig, HIGH); // genera el pulso de trigger por 10us
delay(0.01);
digitalWrite(ptrig, LOW);
duracion = pulseIn(pecho, HIGH); // Lee el tiempo del Echo
distancia = (duracion/2) / 29; // calcula la distancia en centimetros
delay(10);
if (distancia <= 15 && distancia >=2){ // si la distancia es menor de 15cm
digitalWrite(13,HIGH); // enciende LED
analogWrite(derB, 0); // Parar los motores por 200 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay (200);
analogWrite(derB, vel); // Reversa durante 500 mili segundos
analogWrite(izqB, vel);
delay(500);
analogWrite(derB, 0); // Girar durante 1100 milisegundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
delay(1100);
digitalWrite(13,LOW);
}
else{ // Si no hay obstaculos se desplaza al frente
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, vel);
analogWrite(izqA, vel);
}
}
if(estado=='B'){ // Boton OFF, detiene los motores no hace nada
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
estado = "";
}[/b]
hace algo extraño.
tiene un led que se ilumina cuando detecta alguna presencia.
si apago y enciendo el modo automático, algunas veces se ilumina este led sin tener ningún objeto a su alcance.
por el contrario si pongo algún objeto frente al sensor, el led no se ilumina...
un saludo