#include <Wire.h>
#include <LiquidCrystal_I2C.h>//通过i2c驱动lcd显示屏的库函数
#include <IRremote.h>//红外遥控库函数
LiquidCrystal_I2C lcd(0x27,16,2);//LCD初始化(地址,行,列)
int IRPin = 3;
#define LCD_COLUMNS 0x27 //宏定义LCD地址 0x27
#define LCD_LINES 4 //
String a = ""; //定义输入字符串
String b = ""; //定义显示字符串
int Cursor = 0; //Y初始液晶显示屏的显示位置位左上角
int Line = 0; //X初始液晶显示屏的显示位置位左上角
int x=512;
int y=512;
//arduino运行时首先先运行setup函数进行初始化
void setup(){
Serial.begin(9600); //定义初始串口波特率为9600
lcd.init(); //初始化lcd
lcd.backlight(); //开启lcd背光
IrReceiver.begin(IRPin);
pinMode(A0, INPUT); //指定A0引脚位输入
pinMode(A1, INPUT); //指定A1引脚位输入
}
void loop(){
int y = analogRead(A0); //设置A0引脚位y轴 VERT
int x = analogRead(A1); //设置A1引脚位x轴 HORZ
if(IrReceiver.decode()){ //接收红外型号有1无0
translateIR();
if(a == "-")
{
//当a输入位“-”时,把b的字符删去末尾一个重新输入b
a = "";
b=b.substring(0,b.length()-1);
lcd.clear();
lcd.setCursor(Cursor,Line);
lcd.print(b); //重新输出b字符串
}
b=b+a;
lcd.print(a);
a="";
}
PS2Control(x,y);
}
void translateIR(){
switch(IrReceiver.decodedIRData.command){ //接收遥控输出的信号
case 104:a="0";break;
case 48:a="1";break;
case 24:a="2";break;
case 122:a="3";break;
case 16:a="4";break;
case 56:a="5";break;
case 90:a="6";break;
case 66:a="7";break;
case 74:a="8";break;
case 82:a="9";break;
case 152:a="-";break;
default:
break;
}
IrReceiver.resume();//重置红外信号
}
void PS2Control(int x,int y)
{
delay(100);//设置延迟
if(x<350 && Cursor<16-b.length()){lcd.clear();lcd.setCursor(Cursor+=1,Line);lcd.print(b);}
if(x>650 && Cursor>0){lcd.clear();lcd.setCursor(Cursor-=1,Line);lcd.print(b);}
if(y<350 && Line==0){lcd.clear();lcd.setCursor(Cursor,Line+=1);lcd.print(b);}
if(y>650 && Line==1){lcd.clear();lcd.setCursor(Cursor,Line-=1);lcd.print(b);}
}