Caută cod

1602 LCD Keypad Shield: Cod de bază

1602 LCD Keypad Shield: Cod de bază

În acest tutorial, vom explora cum să programăm și să utilizăm un Shield LCD cu Tastatură 1602 cu un Arduino. Acest shield dispune de un afișaj de 16 caractere pe 2 linii și o tastatură care permite diverse funcționalități de intrare. Până la sfârșitul acestui ghid, veți putea afișa mesaje și răspunde eficient la apăsările de taste.

Accentul va fi pe crearea unui program simplu care detectează apăsările de taste și afișează mesaje corespunzătoare pe LCD. Puteți urmări videoclipul pentru o demonstrație vizuală (în videoclip la 03:00).

Hardware Explicat

Componenta principală în această construcție este Shield-ul LCD cu Tastatură 1602. Acest shield se conectează direct la placa Arduino și oferă atât un afișaj, cât și o tastatură pentru interacțiunea cu utilizatorul. LCD-ul poate afișa mesaje text, în timp ce tastatura permite utilizatorilor să selecteze opțiuni prin diverse butoane.

Tastatura funcționează folosind o intrare analogică, pe care Arduino o citește pentru a determina care buton este apăsat. Fiecare buton are o rezistență unică, permițând microcontrolerului să identifice butonul pe baza valorii analogice primite de la senzor.

Detalii din Fișa Tehnică

ProducătorGeneric
Număr de piesăShield LCD cu Tastatură 1602
Tensiune logică/IO5 V
Tensiune de alimentare5 V
Curent de ieșire (pe canal)2 mA
Curent de vârf (pe canal)20 mA
Ghid frecvență PWMN/A
Praguri logice de intrare0,3 Vcc până la 0,7 Vcc
Cădere de tensiune / RDS(on) / saturațieN/A
Limite termice70 °C
PachetFormat shield
Note / varianteCompatibil cu Arduino Uno

  • Asigurați-vă că LCD-ul este alimentat la 5 V pentru a evita deteriorarea.
  • Folosiți rezistențe pull-up adecvate pentru tastatură dacă este necesar.
  • Debounce la apăsările de taste în cod pentru a evita declanșările multiple.
  • Fiți atenți la limitele de curent pentru a evita supraîncălzirea.
  • Testați conexiunile înainte de a alimenta circuitul.

Instrucțiuni de Cablare

Pentru a cabla Shield-ul LCD cu Tastatură 1602, pur și simplu conectați-l direct la placa Arduino. Shield-ul este proiectat să se alinieze cu configurația pinilor unui Arduino Uno. Asigurați-vă că pinii sunt conectați ferm.

Butoanele tastaturii se conectează la pinul de intrare analogic A0. Liniile de date ale LCD-ului sunt gestionate intern de biblioteca folosită, deci nu va trebui să le cablați separat. Shield-ul folosește, de asemenea, câțiva pini digitali pentru controlul luminii de fundal și alte funcționalități, care sunt predefinite în bibliotecă. Dacă urmați documentația bibliotecii, veți descoperi că aceasta gestionează de obicei aceste conexiuni automat.

Exemple de Cod și Explicații

În cod, includem mai întâi biblioteca necesară pentru controlul LCD-ului:

#include <LCD4Bit_mod.h>

Această bibliotecă facilitează comunicarea cu LCD-ul 1602. Apoi creăm o instanță a obiectului LCD cu numărul de linii specificat.

În continuare, inițializăm LCD-ul în funcția setup():

lcd.init();

Această linie pregătește LCD-ul pentru utilizare. După inițializare, putem afișa un mesaj de test folosind funcția lcd.printIn().

În bucla principală, citim intrarea analogică pentru a detecta apăsările de taste:

adc_key_in = analogRead(0);

Această linie citește valoarea de la tastatură. Valoarea ajută la determinarea tastei apăsate folosind funcția get_key() care convertește valoarea ADC într-un număr de tastă.

Demonstrație / Ce să Vă Așteptați

Când rulați codul, apăsarea butoanelor va afișa mesaje corespunzătoare tastei apăsate pe LCD. De exemplu, apăsarea tastei dreapta va afișa "Right Key OK" pe afișaj (în videoclip la 05:30). Dacă detectarea tastelor nu funcționează corect, verificați cablarea și asigurați-vă că bibliotecile corecte sunt incluse în Arduino IDE.

Marcaje Temporale din Video

  • 00:00 - Introducere
  • 03:00 - Prezentare Generală a Codului
  • 05:30 - Demonstrație Apăsare Taste
18-Source code for a 602 LCD keypad shield for Arduino
Limba: 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;
}

Resurse și referințe

Fișiere📁

Nu sunt disponibile fișiere.