Tafuta Msimbo

Kibao cha LCD 1602 chenye Kibodi: Msimbo wa Msingi

Kibao cha LCD 1602 chenye Kibodi: Msimbo wa Msingi

Katika mafunzo haya, tutachunguza jinsi ya kupanga na kutumia 1602 LCD Keypad Shield na Arduino. Kifaa hiki kina onyesho la herufi 16 kwa mstari 2 na kibodi ambacho kinaruhusu kazi mbalimbali za kuingiza data. Kufikia mwisho wa mwongozo huu, utaweza kuonyesha ujumbe na kujibu kubonyeza kwa vitufe kwa ufanisi.

Lengo litakuwa kuunda programu rahisi inayogundua kubonyeza kwa vitufe na kuonyesha ujumbe unaolingana kwenye LCD. Unaweza kufuata video kwa maonyesho ya kuona (katika video saa 03:00).

Vifaa Vimeelezwa

Sehemu kuu katika ujenzi huu ni 1602 LCD Keypad Shield. Kifaa hiki kinaunganishwa moja kwa moja kwenye bodi ya Arduino na hutoa onyesho na kibodi kwa mwingiliano wa mtumiaji. LCD inaweza kuonyesha ujumbe wa maandishi, wakati kibodi inaruhusu watumiaji kuchagua chaguo kupitia vitufe mbalimbali.

Kibodi hufanya kazi kwa kutumia pembejeo ya analogi, ambayo Arduino inaisoma kuamua ni kitufe gani kimebonyezwa. Kila kitufe kina upinzani wake wa kipekee, unaoruhusu kidhibiti kidogo kutambua kitufe kulingana na thamani ya analogi inayopokelewa kutoka kwa sensor.

Maelezo ya Datasheet

MtengenezajiGeneric
Nambari ya sehemu1602 LCD Keypad Shield
Voltage ya Logic/IO5 V
Voltage ya usambazaji5 V
Mkondo wa pato (kwa kila chaneli)2 mA
Mkondo wa kilele (kwa kila chaneli)20 mA
Mwongozo wa mzunguko wa PWMHaupo
Viwango vya pembejeo za mantiki0.3 Vcc hadi 0.7 Vcc
Kushuka kwa voltage / RDS(on) / kuenezaHaupo
Mipaka ya joto70 °C
KifurushiMuundo wa Shield
Vidokezo / lahajaInaoana na Arduino Uno

  • Hakikisha LCD ina nguvu ya 5 V ili kuepuka uharibifu.
  • Tumia resistors sahihi za kuvuta-juu kwa kibodi ikiwa inahitajika.
  • Ondoa kelele za kubonyeza kwa vitufe kwenye msimbo ili kuepuka kuanzisha mara nyingi.
  • Angalia mipaka ya mkondo ili kuepuka joto kupita kiasi.
  • Jaribu miunganisho kabla ya kuwasha mzunguko.

Maagizo ya Uunganishaji

Ili kuunganisha 1602 LCD Keypad Shield, chomeka moja kwa moja kwenye bodi ya Arduino. Shield imeundwa kuendana na mpangilio wa pini za Arduino Uno. Hakikisha pini zimeunganishwa kwa usalama.

Vitufe vya kibodi vinaunganishwa kwenye pini ya pembejeo ya analogi A0. Mistari ya data ya LCD inashughulikiwa ndani na maktaba inayotumiwa, kwa hivyo hautahitaji kuiunganisha kando. Shield pia hutumia pini chache za dijiti kudhibiti mwanga wa nyuma na kazi nyingine, ambazo zimefafanuliwa mapema kwenye maktaba. Ukifuata nyaraka za maktaba, utagundua kwamba kwa kawaida inashughulikia miunganisho hii kiotomatiki.

Mifano ya Msimbo na Maelezo

Katika msimbo, kwanza tunajumuisha maktaba muhimu ya kudhibiti LCD:

#include <LCD4Bit_mod.h>

Maktaba hii inawezesha mawasiliano na 1602 LCD. Kisha tunaunda mfano wa kitu cha LCD na idadi ya mistari iliyobainishwa.

Ifuatayo, tunaanzisha LCD katika kazi ya setup():

lcd.init();

Mstari huu unatayarisha LCD kwa matumizi. Baada ya uanzishaji, tunaweza kuonyesha ujumbe wa majaribio kwa kutumia kazi ya lcd.printIn().

Katika kitanzi kikuu, tunasoma pembejeo ya analogi kugundua kubonyeza kwa vitufe:

adc_key_in = analogRead(0);

Mstari huu unasoma thamani kutoka kwa kibodi. Thamani husaidia kuamua ni kitufe gani kimebonyezwa kwa kutumia kazi ya get_key() inayobadilisha thamani ya ADC kuwa nambari ya kitufe.

Maonyesho / Nini cha Kutarajia

Unapoendesha msimbo, kubonyeza vitufe kutaonyesha ujumbe unaolingana na kitufe kilichobonyezwa kwenye LCD. Kwa mfano, kubonyeza kitufe cha kulia kitaonyesha "Right Key OK" kwenye onyesho (katika video saa 05:30). Ikiwa ugunduzi wa kitufe haufanyi kazi vizuri, angalia miunganisho na uhakikishe maktaba sahihi zimejumuishwa kwenye Arduino IDE yako.

Vidokezo vya Muda wa Video

  • 00:00 - Utangulizi
  • 03:00 - Muhtasari wa Msimbo
  • 05:30 - Maonyesho ya Kubonyeza Kitufe
18-Source code for a 602 LCD keypad shield for Arduino
Språk: 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;
}

Resurser och referenser

Filer📁

Inga filer tillgängliga.