Mündəricat:
- Addım 1: Materiallar Bill
- Addım 2: Şematik və Cicruit
- Addım 3: Kod
- Addım 4: Dəyərlərin Düzəldilməsi
- Addım 5: Tənqiddən və Layihədən Sonra Layihə
- Addım 6: Biraz Satış İşindən Sonra
- Addım 7: Həqiqət anı
- Addım 8: Son
Video: Bir pin 4 × 4 klaviatura: 10 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Hər dəfə bir klaviatura gördüyümdə bir çox sancaqla gəlir, bu sizin Arduino sancaqlarınızın böyük bir tullantıdır, buna görə də tək bir pinlə klaviatura işlədə bilərikmi? Cavab burada.
Addım 1: Materiallar Bill
Avadanlıq:
01 Arduino UNO
02 Çörək lövhələri
I2C ilə 01 LCD
16 Düymələri basın
04 rezistor 1.5 kΩ
04 rezistor 620 Ω
04 resist müqavimət 220 Ω
08 rezistor 100 Ω
01 müqavimət 1 kΩ
07 Jumper telləri
Proqram təminatı:
Arduino IDE kompüterinizə quraşdırılmışdır
Addım 2: Şematik və Cicruit
Bütün fikir budur ki, şaquli şəkildə yerə doğru, digər ucuna (düymə ucu) və 1.5 kΩ, 620Ω, 220Ω və 100Ω rezistorlara, şaquli olaraq Yerə şaquli olaraq bağlanmış 4*4 matris düymələrimiz var. 4 sıra, sxematik şəkildə göstərildiyi kimi dörd 100Ω rezistorla bağlanır.
Hər dəfə bir düyməni basdığınız zaman dövrəni bağlayırsınız və cərəyan fərqli bir yoldan və fərqli rezistorlar zəncirindən keçir, buna görə A0 pin hər düymə üçün fərqli bir oxunuş alır. İndi ehtiyacınız olan hər şey kodlaşdırmaqdır.
Addım 3: Kod
#daxil edin
#daxil edin
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int Düymə = A0;
int readvalue;
boş quraşdırma ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (Düymə, GİRİŞ);
lcd.lightlight ();
lcd.print ("Salam Dünya");
gecikmə (2000);
lcd.clear ();
lcd.print ("Bir pin 4*4 klaviatura");
gecikmə (2000); }
boşluq döngəsi ()
{
readvalue = analogRead (Düymə);
Serial.println (oxu dəyəri);
əgər (oxu dəyəri == 852) {lcd.clear (); lcd.print ("A");}
başqa {if (readvalue == 763) {lcd.clear (); lcd.print ("B");}
başqa {if (readvalue == 685) {lcd.clear (); lcd.print ("C");}
başqa {if (readvalue == 965) {lcd.clear (); lcd.print ("D");}
başqa {if (readvalue == 565) {lcd.clear (); lcd.print ("9");}
başqa {if (readvalue == 614) {lcd.clear (); lcd.print ("6");}
başqa {if (readvalue == 360) {lcd.clear (); lcd.print ("3");}
başqa {if (readvalue == 335) {lcd.clear (); lcd.print ("#");}
başqa {if (readvalue == 396) {lcd.clear (); lcd.print ("8");}
başqa {əgər (oxu dəyəri == 349) {lcd.clear (); lcd.print ("5");}
başqa {if (readvalue == 235) {lcd.clear (); lcd.print ("2");}
başqa {əgər (oxu dəyəri == 279) {lcd.clear (); lcd.print ("0");}
başqa {if (readvalue == 452) {lcd.clear (); lcd.print ("7");}
başqa {əgər (oxu dəyəri == 271) {lcd.clear (); lcd.print ("4");}
başqa {if (readvalue == 170) {lcd.clear (); lcd.print ("1");}
başqa {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} else {}}}}}}}}}}}}}}}}
Addım 4: Dəyərlərin Düzəldilməsi
Seriya monitörünü açdığınızda 1023 dəyərini göstərəcək, bir düyməyə basarsanız başqa bir oxu verər, bu dəyərləri götürüb kodda bəzi dəyişikliklər etməlisiniz.
Addım 5: Tənqiddən və Layihədən Sonra Layihə
Hamımızın biliklərimizi öyrənmək və bölüşmək üçün gəldiyimizə şübhə yoxdur, cəmiyyətdən bəzi insanların çox faydalı olan şərhləri sayəsində layihəmdə bəzi düzəlişlər və təkmilləşdirmələr etmək qərarına gəldim:
Avadanlıq:
Çörək lövhələrində pis əlaqə probleminin qarşısını almaq üçün bütün komponentləri bir PCB -də lehimləmək qərarına gəldim.
Kod:
Bir dostum mənə bir proqramın ləğv edilməsindən istifadə etməyi məsləhət gördü və bu proqramın oxunması üçün bir az vaxt tələb etməsi üçün bir döngə (məsələn, "for" döngəsi) deməkdir ki, çox oxunur (mənim imtahanımda 500), amma yalnız sonuncu.
for (i = 1; i <= 500; i ++) {// yalnız 500 -cü analoqu götür
dəyər = analogRead (Düymə);} // bu, pis oxunmaların qarşısını almaq üçün bir az vaxt almağa kömək edir
Onun sayəsində başqa bir dost mənə "oxu dəyəri" ni bir deyil, bir sıra dəyərlərlə müqayisə etməyi məsləhət gördü, çünki "oxumaq dəyəri" eyni düyməni basmaq üçün bir çox dəyər alır. Məsələn "A" oxunuşunu verir: 849, 850, 851 852, 853, 854, 855, buna görə də 7 dəyər aralığına malikdir: bir eşik (852) və 3 dəyər sola və sağa. burada etməli olduğumuz şey, "oxu dəyəri" ilə "852" arasındakı fərqin mütləq dəyərini "3" ilə müqayisə etməkdir.
if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}
Addım 6: Biraz Satış İşindən Sonra
Addım 7: Həqiqət anı
Gördüyünüz kimi, proqram bəzən düymələri qarışdırır, amma yenə də işləyir, nəzəri olaraq dövrədə heç bir səhv yoxdur, amma kodun daha çox kalibrlənməsi lazımdır.
Addım 8: Son
Ümid edirəm ki, bu layihəni bəyənirsiniz və bunu etməyə çalışırsınız, bəlkə də məndən daha yaxşı edəcəksiniz.
Suallarınız varsa məndən soruşun, şərhlər yazın və istəsəniz mənə səs verməyi unutmayın.
Tövsiyə:
ThingSpeak -dəki bir kanal bir müddət yenilənmədikdə bir bildiriş e -poçtu alın: 16 addım
ThingSpeak kanalının bir müddət yenilənmədiyi zaman bir bildiriş e -poçtu alın: Tarixi hekayə İrlandiyanın Dublin şəhərində yayılmış altı avtomatlaşdırılmış istixanam var. Xüsusi hazırlanmış bir cib telefonu tətbiqindən istifadə edərək, hər bir istixananın avtomatik xüsusiyyətlərini uzaqdan izləyə və onlarla əlaqə qura bilərəm. Qazanı əl ilə aça / bağlaya bilərəm
UC ilə Latch Off Off. Bir Düymə. Bir Pin. Ayrı -ayrı komponent: 5 addım
UC ilə Latch Off Off. Bir Düymə. Bir Pin. Diskret Komponent: Hamıya salam, şəbəkədə açma/söndürmə dövrəsi axtarırdım. Tapdığım hər şey axtardığım kimi deyildi. Özümlə danışırdım, bunun üçün mütləq bir yol var. Mənə lazım olan budur.-Açmaq və söndürmək üçün yalnız bir düymə. -Yalnız istifadə etməlisiniz
Bir Pin Klaviatura Raspberry Pi İstifadə Kılavuzu: 9 addım
Bir Pin Klaviatura Raspberry Pi İstifadə Kılavuzu: DİQQƏT: BU AÇIQ QAYNAQ MƏHSULU ÜÇÜN KULLANIM KILAVUZUDUR: Tək PIN Klaviatura. BU DIY DIY PROJESİ DEYİL. Lövhələri özünüz etmək istəsəniz, təlimin sonunda qartal faylları tapıla bilər. Bir pinli klaviatura nədir? Bir pinli klaviatura
8051 ilə Klaviatura Arayüzü və 7 Segmentdə Klaviatura Nömrələrini Göstərmək: 4 Addım (Şəkillərlə)
8051 ilə Klaviatura Arayüzü və 7 Segmentdə Klaviatura Nömrələrini Göstərmək: Bu dərslikdə 8051 ilə klaviaturanı necə birləşdirə biləcəyimizi və klaviatura nömrələrini 7 seqmentli ekranda necə göstərəcəyimizi izah edəcəyəm
Bir MCU Pin ilə bir çox açarı necə oxumaq olar: 4 addım
Bir MCU Pimi ilə Bir çox Anahtarı Necə Oxumaq olar: Heç bir layihə (lər) dən qaçmısınızmı və buna daha çox şey əlavə edərkən (böyüyən bir yaradıcılıq deyirik) layihə böyüməyə və böyüməyə davam edirmi? Son bir layihədə bir tezlik ölçücü qururdum və beş funksiya əlavə etdim