#define ledPin 13 #define motorDerecha1 4 #define motorDerecha2 5 #define motorIzquierda1 2 #define motorIzquierda2 3 #define echoPin 6 #define triggerPin 7 char estado = 'q'; void setup() { pinMode(ledPin, OUTPUT); pinMode(motorDerecha1, OUTPUT); pinMode(motorDerecha2, OUTPUT); pinMode(motorIzquierda1, OUTPUT); pinMode(motorIzquierda2, OUTPUT); pinMode(triggerPin, OUTPUT); pinMode(echoPin, INPUT); digitalWrite(ledPin, LOW); digitalWrite(motorDerecha1, LOW); digitalWrite(motorDerecha2, LOW); digitalWrite(motorIzquierda1, LOW); digitalWrite(motorIzquierda2, LOW); Serial.begin(9600); } void loop() { long tiempo; long distancia; digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); tiempo = pulseIn(echoPin, HIGH); distancia = (tiempo/29)/3; Serial.println(distancia); Serial.println(estado); if(distancia <= 15) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } //adelante y evadir if(estado == 'w' && distancia <= 15) { digitalWrite(motorDerecha1, LOW); digitalWrite(motorDerecha2, HIGH); digitalWrite(motorIzquierda1, HIGH); digitalWrite(motorIzquierda2, LOW); } //adelante if(estado == 'w' && distancia > 15) { digitalWrite(motorDerecha1, HIGH); digitalWrite(motorDerecha2, LOW); digitalWrite(motorIzquierda1, HIGH); digitalWrite(motorIzquierda2, LOW); } //atras if(estado == 's') { digitalWrite(motorDerecha1, LOW); digitalWrite(motorDerecha2, HIGH); digitalWrite(motorIzquierda1, LOW); digitalWrite(motorIzquierda2, HIGH); } //stop if(estado == 'q') { digitalWrite(motorDerecha1, LOW); digitalWrite(motorDerecha2, LOW); digitalWrite(motorIzquierda1, LOW); digitalWrite(motorIzquierda2, LOW); } //derecha if(estado == 'd' && distancia <= 15) { digitalWrite(motorDerecha1, LOW); digitalWrite(motorDerecha2, HIGH); digitalWrite(motorIzquierda1, HIGH); digitalWrite(motorIzquierda2, LOW); } if(estado == 'd' && distancia > 15) { digitalWrite(motorDerecha1, LOW); digitalWrite(motorDerecha2, LOW); digitalWrite(motorIzquierda1, HIGH); digitalWrite(motorIzquierda2, LOW); } //izquierda if(estado == 'a' && distancia <= 15) { digitalWrite(motorDerecha1, HIGH); digitalWrite(motorDerecha2, LOW); digitalWrite(motorIzquierda1, LOW); digitalWrite(motorIzquierda2, HIGH); } if(estado == 'a' && distancia > 15) { digitalWrite(motorDerecha1, HIGH); digitalWrite(motorDerecha2, LOW); digitalWrite(motorIzquierda1, LOW); digitalWrite(motorIzquierda2, LOW); } } void serialEvent() { if(Serial.available() > 0 ){ int x = Serial.read(); if(x>=97) { estado = (char) x; } } }