#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include<IRremote.h>
int RECV_PIN=11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int AIN1=6;
int AIN2=5;
int BIN1=10;
int BIN2=9;
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
Serial.begin(9600);
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
pinMode(BIN1, OUTPUT);
pinMode(BIN2, OUTPUT);
irrecv.enableIRIn();
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(7, OUTPUT);
}
void setMotor(int MOTORA, int MOTORB)
{
if(MOTORA>=0)
{
digitalWrite(AIN2, HIGH);
analogWrite(AIN1, 255-MOTORA);
}
else
{
digitalWrite(AIN1, HIGH);
analogWrite(AIN2, MOTORA+255);
}
if(MOTORB>=0)
{
digitalWrite(BIN2, HIGH);
analogWrite(BIN1, 255-MOTORB);
}
else
{
digitalWrite(BIN1, HIGH);
analogWrite(BIN2, 255+MOTORB);
}
}
void loop() {
if(Serial.available()>0){
switch(Serial.read()){
case 'w':
setMotor(150, 150);
lcd.setCursor(12, 0);
lcd.print('w');
lcd.setCursor(0, 1);
lcd.print("forward");
break;
case 'a':
setMotor(-120, 120);
lcd.setCursor(14, 0);
lcd.print('a');
lcd.setCursor(0, 1);
lcd.print("left");
break;
case 's':
setMotor(0, 0);
lcd.setCursor(14, 0);
lcd.print('s');
lcd.setCursor(0, 1);
lcd.print("stop");
break;
case 'd':
setMotor(120, -120);
lcd.setCursor(14, 0);
lcd.print('d');
lcd.setCursor(0, 1);
lcd.print("right");
break;
case 'x':
setMotor(-150, -150);
lcd.setCursor(14, 0);
lcd.print('x');
lcd.setCursor(0, 1);
lcd.print("reverse");
break;
if(irrecv.decode(&results)){
irrecv.resume();
switch(results.value){
case 0xFFA25D:
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print("Welcome to use "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print("Five Z of G14");// Print a message to the LCD}
break;
case 0xFF02FD:
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print("Five Z is "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print("Going forward");// Print a message to the LCD}
setMotor(100,100);
digitalWrite(2, HIGH); // 使Led亮
delay(1000); // 持续1秒钟
digitalWrite(2, LOW);
delay(1000); // 持续1秒钟
break;
case 0xFF9867:
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print("Five Z is "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print("Going backward");// Print a message to the LCD}
setMotor(-100,-100);
digitalWrite(3, HIGH); // 使Led亮
delay(1000); // 持续1秒钟
digitalWrite(3, LOW); // 使Led灭
delay(1000);
break;
case 0xFFE01F:
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print("Five Z is "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print("Right rotating");// Print a message to the LCD}
setMotor(-100,100);
digitalWrite(4, HIGH); // 使Led亮
delay(1000); // 持续1秒钟
digitalWrite(4, LOW); // 使Led灭
delay(1000);
break;
case 0xFF906F:
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print("Five Z is "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print("Left rotating");// Print a message to the LCD}
setMotor(100,-100);
digitalWrite(7, HIGH); // 使Led亮
delay(1000); // 持续1秒钟
digitalWrite(7, LOW); // 使Led灭
delay(1000);
break;
case 0xFFA857:
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print("Five Z is "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print("Stopping");// Print a message to the LCD}
setMotor(0,0);
break;
case 0xFFB04F:
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print("Five Z is "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print("Going right");// Print a message to the LCD}
setMotor(90,100);
break;
case 0xFF6897:
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print("Five Z is "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print("Goking left");// Print a message to the LCD}
setMotor(100,90);
break;
}
}
}
}