Page 45 - Armaturobot
P. 45
Así, nuestro programa final se verá de la
siguiente manera.
void loop() {
digitalWrite(trig,HIGH);
delay(1);
digitalWrite(trig,LOW);
duracion=pulseIn(echo,HIGH);
distancia=duracion/58.2;
if(distancia<10) {
smi.write(90);
smd.write(90);
digitalWrite(mia,HIGH);
digitalWrite(mda,HIGH);
}
delay(200);
}
}
else{
smi.write,(180);
smd.write,(0);
}
delay(200);
}
7. 8. Con esto, ya tenemos la mayor parte
de lo que queremos hacer; solo
falta que nuestro robot dé la vuelta
cuando se encuentre con algún
obstáculo. Para esto, el único ajuste
que haremos es cambiar parte de lo
que viene en “i”. Nosotros elegimos
asignarle una vuelta de tipo 3.
Dentro de if, haremos que los motores
giren en sentidos opuestos y le
asignaremos un tiempo lo bastante
largo para que pueda dar un giro,
evitar el obstáculo y seguir su camino.
Acuérdate de enviar un pulso bajo a las
variables que activaste para evitar que
los motores resulten dañados.
Nuestro if quedará de la siguiente
manera.
Es momento de hacer que nuestro
robot se detenga cuando tenga
los brazos arriba, y que avance
cuando los tenga abajo. Por ello,
escribiremos dentro de if que los
motores que se encargan del avance
del robot se detengan por completo,
y en else que los motores se
mantengan activos.
if(distancia<10) {
smi.write(90);
smd.write(90);
digitalWrite(mia,LOW);
digitalWrite(mda,LOW);
}
else{
if(distancia<10) {
smi.write(90);
smd.write(90);
digitalWrite(mia,LOW);
digitalWrite(mda,LOW);
delay(1000);
digitalWrite(mia,HIGH);
digitalWrite(mdr,HIGH);
delay(1500);
digitalWrite(mia,LOW);
smi.write,(180);
smd.write,(0);
43