Paso 4: Parte de código
#include
#define utrigger 13 / / Arduino pin13 atado al pin de disparo en el sensor de ultrasonidos.
#define uecho 12 / / Arduino pin12 atado al pin de echo en el sensor de ultrasonidos.
#define umaxdistance 250 / / distancia máxima queremos ping para (en centímetros). Distancia máxima del sensor está valorada en 400-500cm.
#define rightmotorinput1 3 //defining la 11 pin a logic1 motor en puente H
#define rightmotorinput2 4 //defining 10 pin a logic2 motor en puente H
#define leftmotorinput1 5 //defining 9 pin para motor logic3 en puente H
#define leftmotorinput2 6 //defining 8 pin a logic4 motor en puente H
#define updownmotorinput1 7 //defining 8 pin a logic4 motor en puente H
#define updownmotorinput2 6
NewPing sonar (utrigger, uecho, umaxdistance);
int inByte; variable para almacenar el valor leído
enb int = 2;
void setup()
{/ / iniciar el puerto serie a 9600 bps:
Serial.Begin(9200);
mientras (!. Serie)
{; / / espera para que el puerto serie conectar. Necesario sólo para Leonardo
}
pinMode(rightmotorinput1,OUTPUT);
pinMode(rightmotorinput2,OUTPUT);
pinMode(leftmotorinput1,OUTPUT);
pinMode(leftmotorinput2,OUTPUT);
pinMode(updownmotorinput1,OUTPUT);
pinMode(updownmotorinput2,OUTPUT);
pinMode(enb,INPUT);
}
void loop()
{
Delay(500);
digitalWrite(enb,HIGH);
unsigned int nos = sonar.ping(); Enviar ping, ping tiempo en microsegundos (uS).
Serial.Print ("Ping:"); imprime los datos en el medio ""
Serial.Print(US / US_ROUNDTRIP_CM); Convertir el tiempo de ping a distancia en cm y el resultado de la impresión (0 = distancia fija fuera de rango)
Serial.println("cm");
Si (Serial.available() > 0)
{
inByte = Serial.read();
interruptor (inByte)
{
caso 'r': / / si bot serie r impresión mueve hacia la derecha.
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,HIGH);
digitalWrite(leftmotorinput1,HIGH);
digitalWrite(leftmotorinput2,LOW);
rotura;
caso 'l': / / si bot serie l impresión mueve hacia la izquierda.
digitalWrite(rightmotorinput1,HIGH);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,LOW);
digitalWrite(leftmotorinput2,HIGH);
rotura;
caso 'f': / / si bot serie f de impresión se mueve hacia adelante.
digitalWrite(rightmotorinput1,HIGH);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,HIGH);
digitalWrite(leftmotorinput2,LOW);
rotura;
caso 'b': / / si bot serie b impresión mueve revers.
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,HIGH);
digitalWrite(leftmotorinput1,LOW);
digitalWrite(leftmotorinput2,HIGH);
rotura;
caso sería ': / / si bot serie b impresión mueve revers.
digitalWrite(updownmotorinput1,HIGH);
digitalWrite(updownmotorinput2,LOW);
Delay(1000);
digitalWrite(updownmotorinput1,LOW);
digitalWrite(updownmotorinput2,LOW);
inByte = '0';
rotura;
caso 'u': / / si bot serie b impresión mueve revers.
digitalWrite(updownmotorinput1,LOW);
digitalWrite(updownmotorinput2,HIGH);
Delay(1000);
digitalWrite(updownmotorinput1,LOW);
digitalWrite(updownmotorinput2,LOW);
inByte = '0';
rotura;
caso ' t ':
digitalWrite(rightmotorinput1,HIGH);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,HIGH);
digitalWrite(leftmotorinput2,LOW);
rotura;
de caso ': / / si bot serie b impresión mueve revers. al:
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,LOW);
digitalWrite(leftmotorinput2,LOW);
rotura;
caso '2': / / si bot serie b impresión mueve revers.
Si (nos/US_ROUNDTRIP_CM < 20 & & nos/US_ROUNDTRIP_CM! = 0) / / comprobar distancia si menos de 5cm de distancia y no igual a cero
{
Serial.println("IOF");
digitalWrite(rightmotorinput1,LOW);
digitalWrite(leftmotorinput2,LOW);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,LOW);
Si (Serial.available()==1)
{
inByte = Serial.read();
if(inByte=='s')
{
Goto al;
}
}
Delay(1000);
digitalWrite(rightmotorinput2,HIGH);
digitalWrite(rightmotorinput1,LOW);
digitalWrite(leftmotorinput2,HIGH);
digitalWrite(leftmotorinput1,LOW);
Si (Serial.available()==1)
{
inByte = Serial.read();
if(inByte=='s')
{
Goto al;
}
}
Delay(2000);
digitalWrite(leftmotorinput1,HIGH);
digitalWrite(leftmotorinput2,LOW);
Si (Serial.available()==1)
{
inByte = Serial.read();
if(inByte=='s')
{
Goto al;
}
}
Delay(2000);
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,HIGH);
Si (Serial.available()==1)
{
inByte = Serial.read();
if(inByte=='s')
{
Goto al;
}
}
Delay(1000);
}
otra cosa
{
Serial.println("Else");
digitalWrite(rightmotorinput1,HIGH);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,HIGH);
digitalWrite(leftmotorinput2,LOW);
}
rotura;
}
} /*
Delay(1000);
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,LOW);
digitalWrite(leftmotorinput2,LOW);
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,LOW);
*/
}