Search Code

1602 LCD-sleutelbordskerm: Basiese kode

1602 LCD-sleutelbordskerm: Basiese kode

In hierdie tutoriaal gaan ons ondersoek hoe om 'n 1602 LCD-sleutelbordskild met 'n Arduino te programmeer en te gebruik. Hierdie skild beskik oor 'n 16-karakter by 2-lyn vertoning en 'n sleutelbord wat verskeie invoerfunksies moontlik maak. Teen die einde van hierdie gids sal jy boodskappe kan vertoon en effektief op sleuteldrukke kan reageer.

Die fokus sal wees op die skep van 'n eenvoudige program wat sleuteldrukke opspoor en ooreenstemmende boodskappe op die LCD vertoon. Jy kan saam met die video volg vir 'n visuele demonstrasie (in video by 03:00).

Hardeware Verduidelik

Die primêre komponent in hierdie bou is die 1602 LCD-sleutelbordskild. Hierdie skild koppel direk aan die Arduino-bord en bied beide 'n vertoning en 'n sleutelbord vir gebruikersinteraksie. Die LCD kan teksboodskappe wys, terwyl die sleutelbord gebruikers toelaat om opsies deur verskeie knoppies te kies.

Die sleutelbord werk met 'n analoog invoer, wat die Arduino lees om te bepaal watter knoppie gedruk is. Elke knoppie het 'n unieke weerstand, wat die mikrobeheerder in staat stel om die knoppie te identifiseer op grond van die analoogwaarde wat van die sensor ontvang word.

Datablad Besonderhede

VervaardigerGeneries
Deelnommer1602 LCD-sleutelbordskild
Logika/IO-spanning5 V
Toevoerspanning5 V
Uitsetstroom (per kanaal)2 mA
Piekstroom (per kanaal)20 mA
PWM-frekwensie riglynN/A
Invoerlogika-drempels0.3 Vcc tot 0.7 Vcc
Spanningval / RDS(on) / versadigingN/A
Termiese limiete70 °C
VerpakkingSkildformaat
Notas / varianteVerenigbaar met Arduino Uno

  • Verseker dat die LCD by 5 V aangedryf word om skade te vermy.
  • Gebruik behoorlike optrekweerstande vir die sleutelbord indien nodig.
  • Ontklits sleuteldrukke in die kode om veelvuldige aktiverings te vermy.
  • Hou 'n oog op die stroomlimiete om oorverhitting te vermy.
  • Toets verbindings voordat jy die stroombaan krag gee.

Bedradingsinstruksies

Om die 1602 LCD-sleutelbordskild te bedraad, prop dit eenvoudig direk in die Arduino-bord. Die skild is ontwerp om met die penkonfigurasie van 'n Arduino Uno in lyn te wees. Verseker dat die penne veilig verbind is.

Die sleutelbordknoppies koppel aan die analoog invoerpen A0. Die LCD-datalyne word intern deur die biblioteek wat gebruik word hanteer, so jy hoef hulle nie apart te bedraad nie. Die skild gebruik ook 'n paar digitale penne om die agtergrondlig en ander funksies te beheer, wat vooraf in die biblioteek gedefinieer is. As jy die biblioteekdokumentasie volg, sal jy vind dat dit tipies hierdie verbindings outomaties hanteer.

Kode Voorbeelde & Deurloop

In die kode sluit ons eers die nodige biblioteek in om die LCD te beheer:

#include <LCD4Bit_mod.h>

Hierdie biblioteek fasiliteer kommunikasie met die 1602 LCD. Ons skep dan 'n instansie van die LCD-objek met die aantal lyne gespesifiseer.

Vervolgens initialiseer ons die LCD in die setup()-funksie:

lcd.init();

Hierdie lyn berei die LCD voor vir gebruik. Na initialisering kan ons 'n toetsboodskap vertoon met die lcd.printIn()-funksie.

In die hoof lus lees ons die analoog invoer om sleuteldrukke op te spoor:

adc_key_in = analogRead(0);

Hierdie lyn lees die waarde van die sleutelbord. Die waarde help om te bepaal watter sleutel gedruk is met die get_key()-funksie wat die ADC-waarde in 'n sleutelnommer omskakel.

Demonstrasie / Wat om te Verwag

Wanneer jy die kode hardloop, sal die druk van die knoppies boodskappe vertoon wat ooreenstem met die sleutel wat op die LCD gedruk is. Byvoorbeeld, die druk van die regterknoppie sal "Right Key OK" op die vertoning wys (in video by 05:30). As die sleutelopsporing nie korrek funksioneer nie, kontroleer die bedrading en verseker dat die korrekte biblioteke in jou Arduino IDE ingesluit is.

Video Tydstempels

  • 00:00 - Inleiding
  • 03:00 - Kode Oorsig
  • 05:30 - Sleuteldruk Demonstrasie
18-Source code for a 602 LCD keypad shield for Arduino
Taal: 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;
}

Hulpbronne en verwysings

Lêers📁

Geen lêers beskikbaar.