// ---------------------------------------------------------
// 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.printf ("Hallo");
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
#define BUTTON_UP 25
#define BUTTON_LEFT 26
#define BUTTON_DOWN 14
#define BUTTON_RIGHT 27
LiquidCrystal_I2C oLCD (I2C_ADDR, LCD_COLUMNS, LCD_LINES);
// ---------------------------------------------------------
char sWord[] = "Test";
void setup()
{
oLCD.init();
oLCD.backlight();
oLCD.printf("\n%s\n", sWord);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void loop()
{
for(;;)
{
int iWordLength = 4;
int iMaxRight = 15 - iWordLength;
int iAllButtons[4] = {BUTTON_UP, BUTTON_LEFT, BUTTON_DOWN, BUTTON_RIGHT};
int iRow = 0;
int iCollum = 0;
for(int iCount = 0; iCount <= 3; iCount++)
{
if (digitalRead(iAllButtons[iCount]))
{
Serial.println(iAllButtons[iCount]);
oLCD.clear ();
switch (iCount)
{
case 0:
iRow++;break;
case 1:
iCollum--;break;
case 2:
iCollum++;break;
case 3:
iRow--;break;
}
if (iCollum > iMaxRight) iRow--;
if (iCollum < 0) iRow++;
if (iRow > 1) iRow--;
if (iRow < 0) iRow++;
oLCD.setCursor(iRow,iCollum);
oLCD.printf("\n%s\n", sWord);
}
}
}
}