#define m1 27 #define m2 14 #define m3 12 #define m4 13 int ec = 22; int tr = 23; void setup() { pinMode(m1, OUTPUT); pinMode(m2, OUTPUT); pinMode(m3, OUTPUT); pinMode(m4, OUTPUT); digitalWrite(m1, 0); digitalWrite(m2, 0); digitalWrite(m3, 0); digitalWrite(m4, 0); pinMode(ec, INPUT); pinMode(tr, OUTPUT); digitalWrite(tr, LOW); } void loop() { if(distancia() >= 20){ adelante(); } else{ alto(); delay(1000); atras(); delay(500); izquierda(); delay(500); } } long distancia() { long t; long d; digitalWrite(tr, HIGH); delayMicroseconds(10); digitalWrite(tr, LOW); t = pulseIn(ec, HIGH, 15000); d = (t == 0) ? 400 : t / 59; delay(10); return d; } void alto(){ digitalWrite(m1, 0); digitalWrite(m2, 0); digitalWrite(m3, 0); digitalWrite(m4, 0); } void atras(){ digitalWrite(m1, 0); digitalWrite(m2, 1); digitalWrite(m3, 1); digitalWrite(m4, 0); } void adelante(){ digitalWrite(m1, 1); digitalWrite(m2, 0); digitalWrite(m3, 0); digitalWrite(m4, 1); } void derecha(){ digitalWrite(m1, 1); digitalWrite(m2, 0); digitalWrite(m3, 1); digitalWrite(m4, 0); } void izquierda(){ digitalWrite(m1, 0); digitalWrite(m2, 1); digitalWrite(m3, 0); digitalWrite(m4, 1); } void izq1(){ digitalWrite(m1, 0); digitalWrite(m2, 0); digitalWrite(m3, 0); digitalWrite(m4, 1); } void der1(){ digitalWrite(m1, 1); digitalWrite(m2, 0); digitalWrite(m3, 0); digitalWrite(m4, 0); } void atrasizquierda(){ digitalWrite(m1, 0); digitalWrite(m2, 0); digitalWrite(m3, 1); digitalWrite(m4, 0); } void atrasderecha(){ digitalWrite(m1, 0); digitalWrite(m2, 1); digitalWrite(m3, 0); digitalWrite(m4, 0); }