Bluetooth kontrollerade meddelande Droid--R2Blue2 (/ vad man inte ska göra) (6 / 9 steg)
Steg 6: Arduino kod
#include < LiquidCrystal.h >
int jag = 0;
int z = 0;
ställa in LCD med hjälp av LiquidCrystal biblioteket
LiquidCrystal lcd(2,3,4,5,6,7);
motoriska pins
int m1 = 8.
int m2 = 9.
int m3 = 10;
int m4 = 11;
void setup()
{
ställa in motor pins som utdata
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);
definiera en lcd 16 * 2
LCD.BEGIN (16, 2);
Start seriell länk
Serial.BEGIN(115200);
}
/ * trådarna kanske har fått bytt lite så fiol runt med vilka stift går höga när man ska få den
korrekt kod för rörelse i någon riktning * /
funktion för förflyttning framåt
void forward()
{
digitalWrite(m1,HIGH);
digitalWrite(m4,HIGH);
digitalWrite(m2,LOW);
digitalWrite(m3,LOW);
}
funktion för bakåt rörelse
void backward()
{
digitalWrite(m1,LOW);
digitalWrite(m4,LOW);
digitalWrite(m2,HIGH);
digitalWrite(m3,HIGH);
}
funktionen för att aktivera vänster sin axel
void left()
{
digitalWrite(m1,LOW);
digitalWrite(m4,HIGH);
digitalWrite(m2,HIGH);
digitalWrite(m3,LOW);
}
funktion för att vrida rätt på sin axel
void right()
{
digitalWrite(m1,HIGH);
digitalWrite(m4,LOW);
digitalWrite(m2,LOW);
digitalWrite(m3,HIGH);
}
funktion för att stoppa all rörelse
void stop1()
{
digitalWrite(m1,LOW);
digitalWrite(m4,LOW);
digitalWrite(m2,LOW);
digitalWrite(m3,LOW);
}
void move_code(char x)
{
IF(x=='w')
Forward();
annat if(x=='x')
Backward();
annat if(x=='a')
Left();
annat if(x=='d')
Right();
annat if(x=='s')
stop1();
}
funktion för att Visa meddelande medan i rörelse och kontrollera förflyttning av bot
void display_move()
{
IF(z==0)
{
LCD.Clear();
LCD.Print("Moving...");
z ++;
}
IF(Serial.available())
{
in=Serial.Read();
om (i == 'w' || i =='s "|| i == "a" || i == hade "|| i == "x")
move_code(in);
annat if(in=='%')
lcd_display();
annat
{
LCD.Clear();
LCD.Print ("du skrev skit...");
Delay(3000);
z = 0;
}
}
}
funktion för att visa meddelandet skrev
void lcd_display()
{
LCD.Clear();
stop1();
i = 0;
Jag = 0;
LCD.cursor();
While(in!='%')
{
IF(i>32)
{
LCD.Clear();
Jag = 0;
}
om (Serial.available())
{
char in=Serial.read();
i ++;
om (jag > 16 & & jag < = 32 & & i! = '%')
{
lcd.setCursor((i-17),1);
LCD.Print(in);
}
annat if(in=='%')
{
z = 0;
i = 0;
bryta;
}
annat
LCD.Print(in);
}
}
}
huvudsakliga funktion
void loop()
{
display_move();
}