Hola tengo un pequeño proyecto de un auto de juguete manejado por bluetooth con el celular android , el auto funciona pero tengo pequeños errores en la programación que no he podido solucionar , uno de eso es que el sensor ultrasonico detenga el auto cuando este por chocar .
Aquí dejo el codigo por si me pueden ayudar , el sensor detecta la distancia pero mientras acelera no detiene el auto si esta es menor a lo asiganado, PERO si la distancia es menor ANTES de acelerar este no acelera , no se si me explique bien
#include<SoftwareSerial.h>
#include <Ultrasonic.h>
SoftwareSerial mySerial(0,1);
int led=13;
int valor;
long distancia;
long tiempo;
void setup(){
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, INPUT);
}
void loop(){
if (Serial.available()){
delay(100);
while(Serial.available()){ //LECTURA SERIAL
valor=Serial.read();
digitalWrite(6,LOW); //sensor
delayMicroseconds(2);
digitalWrite(6, HIGH);
delayMicroseconds(10);
tiempo=pulseIn(7, HIGH);
distancia= int(0.017*tiempo);
Serial.println(distancia);
if(valor=='1'&&distancia>=20){
digitalWrite(13, HIGH);
digitalWrite(12, LOW); // Motor hacia adelante
}
else if(valor=='2'){ // Motor hacia atras
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
}
else if(valor=='3'){
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delay(500);
digitalWrite(10, LOW);
}
else if(valor=='4'){
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
delay(500);
digitalWrite(11, LOW);
}
else if(valor=='5'){
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
delay(500);
digitalWrite(11, LOW);
}
else if(valor=='6'){
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delay(500);
digitalWrite(10, LOW);
}
else if(valor=='7'){
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
delay(400);
digitalWrite(11, LOW);
}
else if(valor=='8'){
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delay(400);
digitalWrite(10, LOW);
}
else if(valor=='0'){ // Frenar Motor
digitalWrite(12, LOW);
digitalWrite(13, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
}
}
}
}