Casharradan waa qayb ka mid ah: Furayaasha
Dhammaan fiidiyowyada keypad-ka ayaa halkan lagu taxay.
1602 LCD Keypad Shield: Koodka Asaasiga ah
Cashigarkani, waxaan ku baran doonaa sida loo barnaamijiyo loona isticmaalo 1602 LCD Keypad Shield oo leh Arduino. Shilkan wuxuu leeyahay shaashad 16-xaraf oo 2-sadarro ah iyo keypad u oggolaanaya hawlo kala duwan oo gelin ah. Marka aad dhammayso hagahan, waxaad awoodi doontaa inaad soo bandhigtid farriimaha oo aad ka jawaabto riixista furaha si wax ku ool ah.
Diidmada waxay noqon doontaa abuurista barnaamij fudud oo ogaada riixista furaha oo soo bandhiga farriimaha u dhigma ee LCD-ga. Waxaad la socon kartaa fiidiyowga si aad u aragto muujin muuqaal ah (fiidiyowga 03:00).
Qalabka La Sharaxay
Qaybta koowaad ee dhismahan waa 1602 LCD Keypad Shield. Shilkan wuxuu si toos ah ugu xidhmaa Arduino board-ka wuxuuna bixiyaa shaashad iyo keypad labadaba si isticmaaluhu u macaamilo. LCD-ga wuxuu muujin karaa farriimo qoraal ah, halka keypad-ku u oggolaado isticmaalayaasha inay doortaan ikhtiyaaro iyada oo loo marayo furaha kala duwan.
Keypad-ku wuxuu u shaqeeyaa isticmaalka gelinta analog-ga, kaas oo Arduino uu akhriyo si uu u go'aamiyo furaha la riixay. Furaha kastaa wuxuu leeyahay iska caabin gaar ah, taas oo u oggolaanaysa microcontroller-ka inuu aqoonsado furaha ku salaysan qiimaha analog-ga laga helo sensor-ka.
Faahfaahinta Xogta
| Soo saaraha | Guud |
|---|---|
| Nambarka qaybta | 1602 LCD Keypad Shield |
| Logic/IO voltage | 5 V |
| Korantada sahayda | 5 V |
| Korantada soo saarista (kanal kasta) | 2 mA |
| Korantada ugu sarreysa (kanal kasta) | 20 mA |
| Hagaha soo noqnoqoshada PWM | N/A |
| Heerarka gelinta logic-ga | 0.3 Vcc ilaa 0.7 Vcc |
| Hoos u dhaca korantada / RDS(on) / saturation | N/A |
| Xadka kulaylka | 70 °C |
| Baakad | Qaabka Shield |
| Xusuusin / noocyo | La jaan qaada Arduino Uno |
- Hubi in LCD-ga lagu shideeyo 5 V si looga fogaado dhaawaca.
- Isticmaal resistors-ka pull-up ee habboon ee keypad-ka haddii loo baahdo.
- Debounce riixista furaha ee koodhka si looga fogaado kicinta badan.
- U fiirso xadka korantada si looga fogaado kulaylka xad dhaafka ah.
- Tijaabi xidhiidhada ka hor intaadan shidin wareegga.
Tilmaamaha Xidhiidhinta
Si aad u xidhid 1602 LCD Keypad Shield, si fudud ku xidh si toos ah Arduino board-ka. Shilkan waxaa loo qaabeeyey inuu la jaan qaado qaabka pin-ka ee Arduino Uno. Hubi in pin-yada si ammaan ah u xidhnaadeen.
Furaha keypad-ka waxay ku xidhmaan pin-ka gelinta analog-ga A0. Sadarrada xogta LCD-ga waxaa gudaha u maamula maktabadda la isticmaalo, marka uma baahnid inaad si gooni ah u xidhid. Shilkan wuxuu kaloo isticmaalaa dhawr pin oo dijitaal ah si loo xakameeyo iftiinka dambe iyo hawlo kale, kuwaas oo horay loogu qeexay maktabadda. Haddii aad raacdo dukumeentiga maktabadda, waxaad ogaan doontaa inay caadi ahaan isku xidho xidhiidhada si toos ah.
Tusaalooyinka Koodhka & Sharaxaad
Koodhka, waxaan marka hore ku daraynaa maktabadda lagama maarmaanka u ah xakamaynta LCD-ga:
#include <LCD4Bit_mod.h>
Maktabadani waxay fududaysaa isgaarsiinta 1602 LCD-ga. Kadib waxaan abuuraynaa tusaale shay LCD ah oo leh tirada sadarrada la cayimay.
Marka xigta, waxaan bilaabaynaa LCD-ga shaqada setup():
lcd.init();
Sadarkan wuxuu diyaariyaa LCD-ga si loo isticmaalo. Kadib bilowga, waxaan soo bandhigi karnaa farriin tijaabo ah iyada oo la isticmaalayo shaqada lcd.printIn().
Loop-ka guud, waxaan akhriyaynaa gelinta analog-ga si aan u ogaanno riixista furaha:
adc_key_in = analogRead(0);
Sadarkan wuxuu akhriyaa qiimaha keypad-ka. Qiimuhu wuxuu caawiyaa go'aaminta furaha la riixay iyada oo la isticmaalayo shaqada get_key() oo u beddesha qiimaha ADC-ga nambarka furaha.
Muujin / Waxa Laga Filan Karo
Markaad wado koodhka, riixista furaha waxay soo bandhigi doontaa farriimo u dhigma furaha la riixay ee LCD-ga. Tusaale ahaan, riixista furaha midig waxay muujin doontaa "Right Key OK" ee shaashadda (fiidiyowga 05:30). Haddii aqoonsiga furaha uusan si sax ah u shaqeyn, hubi xidhiidhka oo hubi in maktabadaha saxda ah lagu daray Arduino IDE-gaaga.
Waqtiyada Fiidiyowga
- 00:00 - Hordhac
- 03:00 - Dulmarka Koodhka
- 05:30 - Muujinta Riixista Furaha
Casharradan waa qayb ka mid ah: Furayaasha
- Isticmaalka 4x3 Keypad ee Arduino
- Koodka Arduino iyo Fiidiyowga ee Keypad-ka Afar-Fure ah
- Koodka Arduino iyo Fiidiyowga: 4x4 Matrix Keypad Madow
- Build a Simple Electronic Lock with Keypad and LCD Using Arduino
- Controlling an 8-channel relay with a 4x3 keypad
- Sida loo isticmaalo 4x4 Soft Keypad-ka Arduino-ga
- How to Use a 5x4 20-Key Keypad with Arduino to Detect Strings
- Lesson 67: Controlling an 8-Channel Relay with a Keypad Using Arduino
// 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;
}
Kheyraadka & Tixraacyada
-
DibeddaArduino Library LCD4Bit_mod (GitHub)github.com
Faylasha📁
Fayl la'aan.