Search Code

1602 LCD klávesnicový štít: Základný kód

1602 LCD klávesnicový štít: Základný kód

V tomto návode si ukážeme, ako programovať a využívať 1602 LCD Keypad Shield s Arduinom. Tento shield obsahuje 16-znakový 2-riadkový displej a klávesnicu, ktorá umožňuje rôzne vstupné funkcie. Na konci tejto príručky budete schopní zobrazovať správy a efektívne reagovať na stlačenia klávesov.

Zameriame sa na vytvorenie jednoduchého programu, ktorý deteguje stlačenia klávesov a zobrazuje zodpovedajúce správy na LCD. Môžete sledovať video pre vizuálnu demonštráciu (vo videu o 03:00).

Vysvetlenie hardvéru

Hlavným komponentom v tejto zostave je 1602 LCD Keypad Shield. Tento shield sa pripája priamo k doske Arduino a poskytuje displej aj klávesnicu pre interakciu s používateľom. LCD dokáže zobrazovať textové správy, zatiaľ čo klávesnica umožňuje používateľom vybrať možnosti pomocou rôznych tlačidiel.

Klávesnica funguje pomocou analógového vstupu, ktorý Arduino číta, aby určilo, ktoré tlačidlo je stlačené. Každé tlačidlo má jedinečný odpor, čo umožňuje mikrokontroléru identifikovať tlačidlo na základe analógovej hodnoty prijatej zo senzora.

Podrobnosti z datasheetu

VýrobcaGeneric
Číslo dielu1602 LCD Keypad Shield
Logické/IO napätie5 V
Napájacie napätie5 V
Výstupný prúd (na kanál)2 mA
Špičkový prúd (na kanál)20 mA
Odporúčanie pre PWM frekvenciuN/A
Prahové hodnoty vstupnej logiky0,3 Vcc až 0,7 Vcc
Pokles napätia / RDS(on) / saturáciaN/A
Tepelné limity70 °C
PuzdroFormát shield
Poznámky / variantyKompatibilné s Arduino Uno

  • Uistite sa, že LCD je napájaný 5 V, aby nedošlo k poškodeniu.
  • V prípade potreby použite správne pull-up rezistory pre klávesnicu.
  • V kóde ošetrite zákmit stlačení klávesov, aby nedošlo k viacnásobným spusteniam.
  • Sledujte prúdové limity, aby nedošlo k prehriatiu.
  • Pred napájaním obvodu otestujte pripojenia.

Pokyny na zapojenie

Na zapojenie 1602 LCD Keypad Shield ho jednoducho pripojte priamo k doske Arduino. Shield je navrhnutý tak, aby lícoval s konfiguráciou pinov Arduino Uno. Uistite sa, že piny sú bezpečne pripojené.

Tlačidlá klávesnice sa pripájajú k analógovému vstupnému pinu A0. Dátové linky LCD sú spracované interne knižnicou, ktorú používate, takže ich nemusíte zapájať samostatne. Shield tiež používa niekoľko digitálnych pinov na ovládanie podsvietenia a ďalších funkcií, ktoré sú v knižnici vopred definované. Ak budete postupovať podľa dokumentácie knižnice, zistíte, že tieto pripojenia zvyčajne spracúva automaticky.

Príklady kódu a vysvetlenie

V kóde najprv zahrnieme potrebnú knižnicu na ovládanie LCD:

#include <LCD4Bit_mod.h>

Táto knižnica uľahčuje komunikáciu s 1602 LCD. Potom vytvoríme inštanciu objektu LCD so zadaným počtom riadkov.

Ďalej inicializujeme LCD vo funkcii setup():

lcd.init();

Tento riadok pripraví LCD na použitie. Po inicializácii môžeme zobraziť testovaciu správu pomocou funkcie lcd.printIn().

V hlavnej slučke čítame analógový vstup na detekciu stlačení klávesov:

adc_key_in = analogRead(0);

Tento riadok číta hodnotu z klávesnice. Hodnota pomáha určiť, ktorý kláves bol stlačený, pomocou funkcie get_key(), ktorá konvertuje ADC hodnotu na číslo klávesu.

Demonštrácia / Čo očakávať

Keď spustíte kód, stlačenie tlačidiel zobrazí správy zodpovedajúce stlačenému klávesu na LCD. Napríklad stlačenie pravého tlačidla zobrazí "Right Key OK" na displeji (vo videu o 05:30). Ak detekcia klávesov nefunguje správne, skontrolujte zapojenie a uistite sa, že správne knižnice sú zahrnuté vo vašom Arduino IDE.

Časové značky videa

  • 00:00 - Úvod
  • 03:00 - Prehľad kódu
  • 05:30 - Demonštrácia stlačenia klávesov
18-Source code for a 602 LCD keypad shield for Arduino
Language: C++
// Example use of LCD4Bit_mod library
// Downloaded from https://github.com/douggilliland/lb-Arduino-Code/tree/master/libraries/LCD4Bit_mod
// October 1, 2017. This example will work with a 1602 LCD keypad shield.
// Code used for a YouTube video for the Robojax channel
// Watch the video https://youtu.be/naSSiS_9rEw


#include <LCD4Bit_mod.h> 
// Create an object to control an LCD.  
// Number of lines in display = 1
LCD4Bit_mod lcd = LCD4Bit_mod(2); 

// Key messages
char msgs[5][15] = {"Right Key OK ", 
                    "Up Key OK    ", 
                    "Down Key OK  ", 
                    "Left Key OK  ", 
                    "Select Key OK" };
int  adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;

void setup() { 
  pinMode(13, OUTPUT);  // We'll use the debug LED to output a heartbeat

  lcd.init();
  // Optionally, now set up our application-specific display settings, overriding whatever the LCD did in lcd.init()
  // lcd.commandWrite(0x0F);// Cursor on, display on, blink on.  (Nasty!)
   lcd.clear();
  lcd.printIn("Robojax.com Testing");
    
}

void loop() {

	adc_key_in = analogRead(0);    // Read the value from the sensor  
  digitalWrite(13, HIGH);  
  key = get_key(adc_key_in);		        // Convert into key press
	
	if (key != oldkey)				    // If keypress is detected
	{
    delay(50);		// Wait for debounce time
		adc_key_in = analogRead(0);    // Read the value from the sensor  
    key = get_key(adc_key_in);		        // Convert into key press
    if (key != oldkey)				
    {			
      oldkey = key;
      if (key >=0){
      lcd.cursorTo(2, 0);  // Line = 2, x = 0
  			lcd.printIn(msgs[key]);
      }
    }
  }
  
  //delay(1000);
  digitalWrite(13, LOW);
  

 
  
  
}

// Convert ADC value to key number
int get_key(unsigned int input)
{
	int k;
    
	for (k = 0; k < NUM_KEYS; k++)
	{
		if (input < adc_key_val[k])
		{
           
    return k;
        }
	}
    
    if (k >= NUM_KEYS)
        k = -1;     // No valid key pressed
    
    return k;
}

Resources & references

Files📁

No files available.