// ---------------------------------------------------------
// I2C - LCD Anzeige
// Pinning: ESP32 D22 <=> SCL I2C_LCD
// D21 <=> SDA
// 3V3 <=> Vcc
// GND <=> GND
// Befehle:
// oLCD.init ()
// oLCD.backlight ();
// oLCD.clear ();
// oLCD.setCursor (iSpalte,iZeile);
// oLCD.print ("Hallo");
#include <LiquidCrystal_I2C.h>
#include <string.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
#define Taster_up 13
#define Taster_right 12
#define Taster_down 11
#define Taster_left 10
int Aktuelle_Zeile = 5;
int AKtuelle_Spalte = 5;
int direction = 0;
int direction_Spalte = 0;
int direction_Zeile = 0;
char sText [20];
LiquidCrystal_I2C oLCD (I2C_ADDR, LCD_COLUMNS, LCD_LINES);
// ---------------------------------------------------------
void LCDPrintChar(int iSpalte, int iZeile, char cZeichen){
char sStr[2];
sStr[0] = cZeichen;
sStr[1] = '\0';
oLCD.clear ();
oLCD.setCursor(iSpalte, iZeile);
oLCD.print(sStr);
}
void setup()
{
Serial.begin(9600);
oLCD.init();
oLCD.backlight();
pinMode(Taster_up, INPUT_PULLUP);
pinMode(Taster_left, INPUT_PULLUP);
pinMode(Taster_down, INPUT_PULLUP);
pinMode(Taster_right, INPUT_PULLUP);
}
void move_Ball(){
if Aktuelle_Spalte < 19 && Aktuelle_Spalte > 1 && Aktuelle_Zeile < 3 && Aktuelle > 0{
Aktuelle_Spalte=Aktuelle_Spalte+direction_Spalte;
Aktuelle_Zeile=Aktuelle_Zeile+direction_Zeile;
LCDPrintChar(Aktuelle_Spalte,Aktuelle_Zeile,'x');
}else{
switch(direction){
case 0: direction_Spalte = 0; direction_Zeile = 1; break;
case 1: direction_Spalte = 1; direction_Zeile = 1; break;
case 2: direction_Spalte = 1; direction_Zeile = 0; break;
case 3: direction_Spalte = 1; direction_Zeile = -1; break;
case 4: direction_Spalte = 0; direction_Zeile = -1; break;
case 5: direction_Spalte = -1; direction_Zeile = -1; break;
case 6: direction_Spalte = -1; direction_Zeile = 0; break;
case 7: direction_Spalte = -1; direction_Zeile = 1; break;
}
}
}
void loop() {
oLCD.clear ();
LCDPrintChar(0,0,'x');
int iSpalte = 0;
int iZeile =0;
char sign = 'x';
for(;;delay(20)){
if (digitalRead(Taster_up) == 0&& iZeile > 0){
iZeile-=1;
LCDPrintChar(iSpalte, iZeile, sign);
Serial.println("Up");
Serial.println(iZeile);
delay(150);
}
if (digitalRead(Taster_right)==0&& iSpalte <19){
iSpalte+=1;
LCDPrintChar(iSpalte, iZeile, sign);
Serial.println("right");
Serial.println(iSpalte);
delay(150);
}
if (digitalRead(Taster_down)==0&& iZeile < 3){
iZeile+=1;
LCDPrintChar(iSpalte, iZeile, sign);
Serial.println("down");
Serial.println(iZeile);
delay(150);
}
if (digitalRead(Taster_left)==0 && iSpalte > 0){
iSpalte-=1;
LCDPrintChar(iSpalte, iZeile, sign);
Serial.println("left");
Serial.println(iSpalte);
delay(150);
}
}
}