Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*
  2. www.santy.cz
  3. Dil 4 - LCD modul - cast 1
  4. */
  5. //Test využívá knihovnu LiquidCrystal
  6. #include <LiquidCrystal.h>
  7. /*******************************************************
  8. Tento program testuje LCD modul 1602 a jeho tlačítka
  9. úprava © Aleš Müller, Únor 2014
  10. ********************************************************/
  11.  
  12. // využité piny na desce Arduino
  13. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  14.  
  15. // definice hodnot pro použití s panelem a tlačítky
  16. int lcd_key     = 0;
  17. int adc_key_in  = 0;
  18. #define btnRIGHT  0
  19. #define btnUP     1
  20. #define btnDOWN   2
  21. #define btnLEFT   3
  22. #define btnSELECT 4
  23. #define btnNONE   5
  24.  
  25. // tato funkce čte hodnotu tlačítek
  26. int read_LCD_buttons()
  27. {
  28.  adc_key_in = analogRead(0);      // čteme hodnotu ze senzoru
  29.  // střední hodnota tlačítek je zhruba tato: 0, 144, 329, 504, 741
  30.  // přidáme cca 50 k těmto hodnotám a zkontrolujeme zda jsme blízko
  31.  if (adc_key_in > 1000) return btnNONE; // kontrolujeme nejprve tuto možnost, protože to je nejčastější stav
  32.  if (adc_key_in < 50)   return btnRIGHT;  
  33.  if (adc_key_in < 195)  return btnUP;
  34.  if (adc_key_in < 380)  return btnDOWN;
  35.  if (adc_key_in < 555)  return btnLEFT;
  36.  if (adc_key_in < 790)  return btnSELECT;  
  37.  return btnNONE;  // pokus nic z toho neodpovídá, vracíme tuto hodnotu
  38. }
  39.  
  40. void setup()
  41. {
  42.  lcd.begin(16, 2);              // start knihovny pro LCD
  43.  lcd.setCursor(0,0);            // sloupec 0 , řádek 0
  44.  lcd.print("  www.santy.cz  "); // jednoduchý výpis na LCD
  45.  lcd.setCursor(0,1);            // sloupec 0 , řádek 1
  46.  lcd.print("1602 LCD  Keypad");
  47.  delay(5000);                   // pauza 5 sec
  48.  lcd.clear();                   // vymažeme displej
  49.  lcd.setCursor(0,0);
  50.  lcd.print("Stiskni tlacitko");
  51.  
  52. }
  53.  
  54. void loop()
  55. {
  56.  lcd.setCursor(12,1);           // přesuneme kurzor na druhý řádek a znak č.13 (vše číslováno od nuly!)
  57.  lcd.print(millis()/1000);      // vypíšeme počet sekund od spuštění zařízení
  58.  
  59.  
  60.  lcd.setCursor(0,1);            // vrátíme zpět na začátek druhého řádku
  61.  lcd_key = read_LCD_buttons();  // přečteme stav tlačítek
  62.  
  63.  switch (lcd_key)               // dle toho, které je stisknuto vypíšeme akci
  64.  {
  65.    case btnRIGHT:
  66.      {
  67.      lcd.print("Doprava");
  68.      break;
  69.      }
  70.    case btnLEFT:
  71.      {
  72.      lcd.print("Doleva ");
  73.      break;
  74.      }
  75.    case btnUP:
  76.      {
  77.      lcd.print("Nahoru ");
  78.      break;
  79.      }
  80.    case btnDOWN:
  81.      {
  82.      lcd.print("Dolu   ");
  83.      break;
  84.      }
  85.    case btnSELECT:
  86.      {
  87.      lcd.print("Volba  ");
  88.      break;
  89.      }
  90.      case btnNONE:
  91.      {
  92.      lcd.print("- nic -");
  93.      break;
  94.      }
  95.   }
  96. }