/* Hello Wokwi! */
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int IRPin = 3;
#define LCD_COLUMNS 0x27
#define LCD_LINES 4
String a = "";
String b = "";
int Cursor = 0;
int Line = 0;
int x=512;
int y=512;
void setup(){
Serial.begin(9600);
lcd.init();
lcd.backlight();
IrReceiver.begin(IRPin);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
}
void loop(){
int y = analogRead(A0);
int x = analogRead(A1);
if(IrReceiver.decode()){
translateIR();
if(a == "-")
{
//Serial.println(b.length());
a = "";
b=b.substring(0,b.length()-1);
lcd.clear();
lcd.setCursor(Cursor,Line);
lcd.print(b);
}
b=b+a;
lcd.print(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:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("other button!");
lcd.setCursor(0,1);
lcd.print("button code:");
lcd.print(IrReceiver.decodedIRData.command);
}
IrReceiver.resume();
}
void PS2Control(int x,int y)
{
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);}
}