#include <LiquidCrystal_I2C.h>
// instancies de les llibreries
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define jPinX A1
#define jPinY A0
#define jPinB A2
uint16_t joyX, joyY;
bool joyB = false;
uint8_t lcdCol = 0;
#define MINCOL 0
#define MAXCOL 20
const uint8_t pacman[8] = {
0b00000,
0b00100,
0b01110,
0b11011,
0b11111,
0b01110,
0b10001,
0b00000
};
void setup() {
// put your setup code here, to run once:
//pinMode(jPinX, INPUT);
//pinMode(jPinY, INPUT);
pinMode(jPinB, INPUT_PULLUP);
Serial.begin(9600);
lcd.init();
lcd.createChar(1, pacman);
lcd.backlight();
lcdCol = centraText("Thos i codina");
Serial.print("Pos Col: "); Serial.println(lcdCol);
lcd.setCursor(lcdCol,0);
lcd.print("Thos i Codina");
//lcd.setCursor(lcdCol,1);
//lcd.print("\1");
lcdCol = centraText("a");
Serial.println("Setup Ok!");
}
void loop() {
// put your main code here, to run repeatedly:
joyX = analogRead(jPinX);
joyY = analogRead(jPinY);
joyB = digitalRead(jPinB);
//Serial.print("jX: "); Serial.println(joyX);
//Serial.print("jY: "); Serial.println(joyY);
if(!joyB){
lcd.print(" ");
lcdCol = centraText("a");
}
if(joyX < 250){
lcd.setCursor(lcdCol,2);
lcd.print(" ");
lcdCol++;
if(lcdCol >= MAXCOL) lcdCol = 0;
}
else if(joyX > 750){
lcd.setCursor(lcdCol,2);
lcd.print(" ");
if(lcdCol <= MINCOL) lcdCol = 19;
else lcdCol--;
}
else{}
//Serial.print("Columna: "); Serial.println(lcdCol);
lcd.setCursor(lcdCol,2);
lcd.write(1);
delay(100);
}
int centraText(char * txt){
int valor;
valor = (MAXCOL - strlen(txt))/2;
if (valor > MAXCOL) return 0;
else return valor;
}