// Arduino LCD 16x2 Shield
// připojení knihovny
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// inicializace LCD displeje
LiquidCrystal_I2C lcd(0x27, 16,2);
// nastavení čísla propojovacího pinu
// pro osvětlení LCD displeje
unsigned long currentTime ;
unsigned long previousTime = millis();
long timeInterval = 10000;
void setup() {
// zahájení komunikace s displejem,
// 16 znaků, 2 řádky
lcd.init();
// nastavení pinu pro řízení osvětlení jako výstupu
lcd.backlight();
lcd.clear();
//lcd.setCursor(0,0);
//cd.print("^ - AUTOMAT");
//lcd.setCursor(0,1);
//lcd.print("v - ZPET MANUAL");
}
void loop() {
currentTime = millis();
if(currentTime - previousTime > timeInterval) {
lcd.noBacklight();
}
// načtení údajů z analogového pinu A0 do proměnné
int analogData = analogRead(0);
// zapnutí osvětlení displeje
//digitalWrite(lcdSvit, HIGH);
// nastavení výpisu na první znak, první řádek
lcd.setCursor(0, 0);
// vytištění textu na displej
lcd.print("Stisknuto: ");
// nastavení výpisu na třináctý znak, první řádek
lcd.setCursor(12, 0);
// vytištění textu na displej
lcd.print(analogData);
// nastavení výpisu na třetí znak, druhý řádek
lcd.setCursor(2, 1);
// vytištění textu na displej pomocí zavolání funkce
// s předáním aktuálně změřené hodnoty na vstupu
lcd.print(nactiTlacitka(analogData));
// pauza pro přečtení údajů na displeji
//delay(1000);
// vypnutí osvětlení displeje
//digitalWrite(lcdSvit, LOW);
// pauza před koncem smyčky
//delay(100);
}
String nactiTlacitka(int analog) {
// proměnná pro uložení textu pro výpis
String text;
// postupná kontrola pomocí podmínek if,
// pro každé tlačítko je uveden rozsah hodnot,
// ve kterých je detekováno a poté nastaven text na výstup
if (analog < 750) {
previousTime = currentTime;
lcd.backlight();
}
if (analog < 50) text = "Vpravo(RIGHT)";
if ((analog > 700) && (analog < 1024)) text = " ";
if ( (analog > 95) && (analog < 150) ) text = "Nahoru(UP)";
if ( (analog > 250) && (analog < 350) ) text = "Dolu(DOWN)";
if ( (analog > 400) && (analog < 500) ) text = "Vlevo(LEFT)";
if ( (analog > 600) && (analog < 750) ) text = "Vyber(SELECT)";
// vrácení textu jako výstup funkce
return text;
}