#include <LiquidCrystal_I2C.h>
#include<IRremote.h>
#include <string.h>
#include <stdlib.h>
#include<Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int Cursor = 0; //横坐标
int Line = 0; //纵坐标
int IRPin = 3; //红外
String a = "";
String b = "";
void setup(){
Serial.begin(9600);
lcd.init(); //初始化
lcd.backlight();
IrReceiver.begin(IRPin);
pinMode(A0, INPUT); //X
pinMode(A1, INPUT); //Y
}
void loop(){
if(IrReceiver.decode()){
translateIR();
b=b+a; //加数字
lcd.clear(); //清屏
lcd.print(b); //显示加后数字
}
move();
}
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 176:
a="";
b="";
lcd.setCursor(0,1);
delay(1000);
break;
case 194: //删除
a="";
b=b.substring(0,b.length()-1);
lcd.setCursor(0,1);
delay(200);
break;
default:
a="";b="";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("other button!");
lcd.setCursor(0,1);
lcd.print("button code:");
lcd.print(IrReceiver.decodedIRData.command);
delay(1000);
}
IrReceiver.resume();
}
void move() {
int y = analogRead(A0);
int x = analogRead(A1);
delay(100);
if(x<350 && Cursor<15){
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);
}
}