// LCD1602 to Arduino Uno connection example
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// defino los nuevo caracter o imagenes
byte letra1[8] = { B01110, B10111, B11111, B11111, B10000, B11111, B11111, B01110 }; // PAC
byte letra2[8] = { B01111, B10110, B11100, B11000, B11000, B11100, B11110, B01111 };
byte letra8[8] = { B01110, B11101, B11111, B11111, B00001, B11111, B11111, B01110 }; // PAC IZQ
byte letra9[8] = { B11110, B01101, B00111, B00011, B00011, B00111, B01111, B11110 };
byte letra3[8] = { B01110, B11111, B10101, B11111, B11111, B11111, B10101, B10101 }; //fantasma
byte letra0[8] = { B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000 }; // blanco
byte letra4[8] = { B01111, B10110, B11100, B11000, B11000, B11100, B11110, B01111 }; // atrapado
byte letra5[8] = { B01110, B10101, B11011, B11111, B01110, B01110, B00000, B00000 }; // Muerto
byte letra6[8] = { B00111, B00110, B00110, B00110, B00110, B00110, B00110, B00111 }; // Der
byte letra7[8] = { B01110, B10111, B11111, B11111, B10000, B11111, B11111, B01110 }; // Izq
int x=0;
int y=0;
int arriba=6;
int abajo=7;
int derecha=8;
int izquierda=9;
int der1=2;
int der2=7;
int posx=19;
int posy=3;
int x_a=0;
int y_a=0;
void setup() {
lcd.begin(20, 4);
lcd.createChar(1, letra1); // asigna los nuevos caracteres por numeros
lcd.createChar(2, letra2);
lcd.createChar(3, letra3);
lcd.createChar(0, letra0);
lcd.createChar(4, letra4);
lcd.createChar(5, letra5);
lcd.createChar(6, letra6);
lcd.createChar(7, letra7);
lcd.createChar(8, letra8);
lcd.createChar(9, letra9);
pinMode(arriba,INPUT);
pinMode(abajo,INPUT);
pinMode(derecha,INPUT);
pinMode(izquierda,INPUT);
}
void loop() {
//lcd.setCursor(0,0);// Se posiciona en la primera linea
// lcd.print("Hello World!!!!");
// lcd.setCursor(0,1);// Se posiciona en la segunda linea
// lcd.print("Hola mundo!!!!");
//posx = random(0,19);
//posy = random(0,3);
lcd.setCursor(posx,posy);
lcd.write(byte(3));
lcd.setCursor(x,y); // imagen PAC 1
lcd.write(byte(der1));
delay(100);
lcd.setCursor(x,y); // imagen PAC 2
lcd.write(byte(der2));
delay(100);
//*****************************************
if (digitalRead(derecha)==HIGH){
x_a = random(-2,2);
//y_a = random(-2,2);
posx=posx+x_a;
//posy=posy+y_a;
if(posx>19){
posx=19;
}
if(posx<0){
posx=0;;
}
if(posy<0){
posy=0;
}
if(posy>3){
posy=3;
}
der1=2;
der2=7;
lcd.clear();
x++;
if(x>=20){
x=0;
}
}
//********************************************
if (digitalRead(izquierda)==HIGH){
x_a = random(-2,2);
//y_a = random(-2,2);
posx=posx+x_a;
//posy=posy+y_a;
if(posx>19){
posx=19;
}
if(posx<0){
posx=0;;
}
if(posy<0){
posy=0;
}
if(posy>3){
posy=3;
}
der1=8;
der2=9;
lcd.clear();
x--;
if(x<=-1){
x=19;
}
}
//**********************************************
if (digitalRead(arriba)==HIGH){
posx = random(0,19);
posy = random(0,3);
lcd.clear();
y--;
if(y<=-1){
y=3;
}
}
//*****************************************
if (digitalRead(abajo)==HIGH){
posx = random(0,19);
posy = random(0,3);
lcd.clear();
y++;
if(y>=4){
y=0;
}
}
//******************************************
}