Пребарување код

1602 LCD Keypad Shield: Основен код

1602 LCD Keypad Shield: Основен код

Во ова упатство, ќе истражиме како да програмираме и користиме 1602 LCD Keypad Shield со Arduino. Овој штит има дисплеј со 16 карактери и 2 линии и тастатура што овозможува различни функции за внес. До крајот на овој водич, ќе можете да прикажувате пораки и ефикасно да одговарате на притискањата на копчињата.

Фокусот ќе биде на создавање едноставна програма што детектира притискања на копчиња и прикажува соодветни пораки на LCD-то. Можете да го следите видеото за визуелна демонстрација (во видео на 03:00).

Објаснување на хардверот

Примарната компонента во оваа изработка е 1602 LCD Keypad Shield. Овој штит се поврзува директно на Arduino плочата и обезбедува и дисплеј и тастатура за интеракција со корисникот. LCD-то може да прикажува текстуални пораки, додека тастатурата им овозможува на корисниците да избираат опции преку различни копчиња.

Тастатурата работи со аналоген влез, кој Arduino го чита за да одреди кое копче е притиснато. Секое копче има уникатен отпор, што му овозможува на микроконтролерот да го идентификува копчето врз основа на аналогната вредност добиена од сензорот.

Детали од техничката документација

ПроизводителГенерички
Број на дел1602 LCD Keypad Shield
Логички/IO напон5 V
Напон на напојување5 V
Излезна струја (по канал)2 mA
Врвна струја (по канал)20 mA
Насоки за PWM фреквенцијаН/П
Прагови на влезна логика0.3 Vcc до 0.7 Vcc
Пад на напон / RDS(on) / заситувањеН/П
Термички граници70 °C
ПакетФормат на штит
Белешки / варијантиКомпатибилен со Arduino Uno

  • Осигурете се дека LCD-то е напојувано со 5 V за да избегнете оштетување.
  • Користете соодветни pull-up отпорници за тастатурата ако е потребно.
  • Дебансирајте ги притискањата на копчињата во кодот за да избегнете повеќекратни активации.
  • Внимавајте на границите на струјата за да избегнете прегревање.
  • Тестирајте ги врските пред да го напојувате колото.

Инструкции за поврзување

За да го поврзете 1602 LCD Keypad Shield, едноставно приклучете го директно на Arduino плочата. Штитот е дизајниран да се усогласи со пинската конфигурација на Arduino Uno. Осигурете се дека пиновите се безбедно поврзани.

Копчињата на тастатурата се поврзуваат со аналогниот влезен пин A0. Линиите за податоци на LCD-то се управуваат внатрешно од библиотеката што се користи, така што нема да треба да ги поврзувате одделно. Штитот исто така користи неколку дигитални пинови за контрола на позадинското осветлување и други функции, кои се претходно дефинирани во библиотеката. Ако ја следите документацијата на библиотеката, ќе откриете дека таа обично ги управува овие врски автоматски.

Примери на код и објаснување

Во кодот, прво ја вклучуваме потребната библиотека за контрола на LCD-то:

#include <LCD4Bit_mod.h>

Оваа библиотека ја олеснува комуникацијата со 1602 LCD-то. Потоа создаваме инстанца на LCD објектот со наведен број на линии.

Следно, го иницијализираме LCD-то во функцијата setup():

lcd.init();

Оваа линија го подготвува LCD-то за употреба. По иницијализацијата, можеме да прикажеме тест порака користејќи ја функцијата lcd.printIn().

Во главната јамка, го читаме аналогниот влез за да детектираме притискања на копчиња:

adc_key_in = analogRead(0);

Оваа линија ја чита вредноста од тастатурата. Вредноста помага да се одреди кое копче е притиснато користејќи ја функцијата get_key() што ја претвора ADC вредноста во број на копче.

Демонстрација / Што да очекувате

Кога ќе го стартувате кодот, притискањето на копчињата ќе прикажува пораки што одговараат на притиснатото копче на LCD-то. На пример, притискањето на десното копче ќе прикаже „Right Key OK“ на дисплејот (во видео на 05:30). Ако детекцијата на копчиња не функционира правилно, проверете ги врските и осигурете се дека соодветните библиотеки се вклучени во вашата Arduino IDE.

Временски ознаки од видеото

  • 00:00 - Вовед
  • 03:00 - Преглед на кодот
  • 05:30 - Демонстрација на притискање на копчиња
18-Source code for a 602 LCD keypad shield for Arduino
Јазик: 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;
}

Ресурси и референци

Датотеки📁

Нема достапни датотеки.