Paso 6: Código de Arduino
#include < LiquidCrystal.h >
int i = 0;
int z = 0;
configurar LCD utilizando la librería LiquidCrystal
LiquidCrystal lcd(2,3,4,5,6,7);
pernos de motor
int m1 = 8;
int m2 = 9;
m3 de int = 10;
int m4 = 11;
void setup()
{
configuración de motor pines como salida
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);
definición de una pantalla lcd de 16 * 2
LCD.Begin (16, 2);
a partir de enlace serie
Serial.Begin(115200);
}
/ * los cables podrían haber conseguido intercambiar un poco violín alrededor con que pin va alta cuando obtener la
Código apropiado para el movimiento en cualquier dirección * /
función de avance
forward() vacío
{
digitalWrite(m1,HIGH);
digitalWrite(m4,HIGH);
digitalWrite(m2,LOW);
digitalWrite(m3,LOW);
}
función de retroceso
void backward()
{
digitalWrite(m1,LOW);
digitalWrite(m4,LOW);
digitalWrite(m2,HIGH);
digitalWrite(m3,HIGH);
}
función para girar a la izquierda sobre su eje
left() vacío
{
digitalWrite(m1,LOW);
digitalWrite(m4,HIGH);
digitalWrite(m2,HIGH);
digitalWrite(m3,LOW);
}
función para girar en su eje
right() vacío
{
digitalWrite(m1,HIGH);
digitalWrite(m4,LOW);
digitalWrite(m2,LOW);
digitalWrite(m3,HIGH);
}
función para detener todo el movimiento
void stop1()
{
digitalWrite(m1,LOW);
digitalWrite(m4,LOW);
digitalWrite(m2,LOW);
digitalWrite(m3,LOW);
}
void move_code(char x)
{
if(x=='w')
Forward();
if(x=='x') más
backward();
if(x=='a') más
Left();
if(x=='d') más
Right();
if(x=='s') más
stop1();
}
función para mostrar el mensaje mientras que en el movimiento y controlar el movimiento de bot
void display_move()
{
if(z==0)
{
LCD.Clear();
LCD.Print("Moving...");
z ++;
}
if(serial.Available())
{
in=serial.Read();
Si (en == 'w' || == en de ' || == en 'a' || en == había ' || en == 'x')
move_code(in);
if(in=='%') más
lcd_display();
otra cosa
{
LCD.Clear();
LCD.Print ("que ha escrito mierda..");
Delay(3000);
z = 0;
}
}
}
función para mostrar el mensaje escrito
void lcd_display()
{
LCD.Clear();
stop1();
a = 0;
i = 0;
LCD.cursor();
while(in!='%')
{
if(i>32)
{
LCD.Clear();
i = 0;
}
Si (Serial.available())
{
char in=Serial.read();
i ++;
Si (i > 16 & & i < = 32 & &! = '%')
{
lcd.setCursor((i-17),1);
LCD.Print(in);
}
if(in=='%') más
{
z = 0;
a = 0;
rotura;
}
otra cosa
LCD.Print(in);
}
}
}
función principal
void loop()
{
display_move();
}