Mundarija:
- 1 -qadam: materiallar ro'yxati
- 2 -qadam: sxematik va tsikrut
- 3 -qadam: Kod
- 4 -qadam: qadriyatlarni tuzatish
- 5 -qadam: Tanqid va ko'rib chiqishdan keyingi loyiha
- 6 -qadam: sotishdan keyin
- 7 -qadam: Haqiqat lahzasi
- 8 -qadam: Oxir
Video: Bir pinli 4 × 4 klaviatura: 10 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Har safar men klaviaturani ko'rsam, u juda ko'p pinlar bilan birga keladi, bu sizning Arduino pinlaringizning katta isrofgarchiligi, shuning uchun biz bitta va bitta pinli klaviaturani ishga tushira olamizmi? Javob shu erda.
1 -qadam: materiallar ro'yxati
Uskuna:
01 Arduino UNO
02 Pechkalar paneli
I2C bilan 01 LCD
16 tugmachalarni bosing
04 rezistorlar 1,5 kΩ
04 qarshilik 620 Ω
04 qarshilik 220 Ω
08 qarshilik 100 Ω
01 qarshilik 1 kΩ
07 o'tish simlari
Dasturiy ta'minot:
Kompyuteringizga Arduino IDE o'rnatilgan
2 -qadam: sxematik va tsikrut
Hamma g'oya shundaki, bizda 4*4 matritsali tugmalar yerga vertikal ravishda o'ng simi bilan, gorizontal ravishda boshqa simi (tugma chizig'i) va 1,5 kΩ, 620Ω, 220Ω va 100Ω rezistorlar bilan bog'langan. 4 qator sxemada ko'rsatilganidek, 100 Ω to'rtta qarshilik bilan bog'langan.
Har safar siz tugmachani bosganingizda, siz kontaktlarning zanglashiga olib keladi va oqim boshqa yo'l va turli rezistorlar zanjiridan o'tadi, shuning uchun A0 pimi har bir tugma uchun har xil analog o'qishni oladi. Sizga kerak bo'lgan hamma narsa kodlash.
3 -qadam: Kod
#qo'shing
#qo'shing
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int tugmasi = A0;
int readvalue;
bo'sh o'rnatish ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (tugma, kirish);
lcd.backlight ();
lcd.print ("Salom dunyo");
kechikish (2000);
lcd.clear ();
lcd.print ("bitta pin 4*4 klaviatura");
kechikish (2000); }
bo'sh halqa ()
{
readvalue = analogRead (Tugma);
Serial.println (o'qish qiymati);
agar (o'qish qiymati == 852) {lcd.clear (); lcd.print ("A");}
boshqa {agar (o'qish qiymati == 763) {lcd.clear (); lcd.print ("B");}
boshqa {agar (o'qish qiymati == 685) {lcd.clear (); lcd.print ("C");}
boshqa {agar (o'qish qiymati == 965) {lcd.clear (); lcd.print ("D");}
boshqa {agar (o'qish qiymati == 565) {lcd.clear (); lcd.print ("9");}
boshqa {agar (o'qish qiymati == 614) {lcd.clear (); lcd.print ("6");}
boshqa {agar (o'qish qiymati == 360) {lcd.clear (); lcd.print ("3");}
boshqa {agar (o'qish qiymati == 335) {lcd.clear (); lcd.print ("#");}
boshqa {agar (o'qish qiymati == 396) {lcd.clear (); lcd.print ("8");}
boshqa {agar (o'qish qiymati == 349) {lcd.clear (); lcd.print ("5");}
boshqa {agar (o'qish qiymati == 235) {lcd.clear (); lcd.print ("2");}
boshqa {agar (o'qish qiymati == 279) {lcd.clear (); lcd.print ("0");}
boshqa {agar (o'qish qiymati == 452) {lcd.clear (); lcd.print ("7");}
boshqa {agar (o'qish qiymati == 271) {lcd.clear (); lcd.print ("4");}
boshqa {agar (o'qish qiymati == 170) {lcd.clear (); lcd.print ("1");}
boshqa {if (o'qish qiymati == 92) {lcd.clear (); lcd.print ("*");} boshqa {}}}}}}}}}}}}}}}}
4 -qadam: qadriyatlarni tuzatish
Agar ketma -ket monitorni ochsangiz, u 1023 qiymatini ko'rsatadi, agar siz tugmani bosgan bo'lsangiz, u sizga boshqa o'qishni beradi, siz bu qiymatlarni olishingiz va kodga ba'zi o'zgartirishlar kiritishingiz kerak.
5 -qadam: Tanqid va ko'rib chiqishdan keyingi loyiha
Shubha yo'qki, biz hammamiz bu erda o'z bilimimizni o'rganish va bo'lishish uchun keldik, hamjamiyatdan juda foydali bo'lgan ba'zi sharhlar tufayli men o'z loyihamga ba'zi o'zgartirishlar kiritishga qaror qildim:
Uskuna:
Non panelidagi noto'g'ri ulanish muammosini oldini olish uchun men barcha komponentlarni tenglikni kartasiga lehimlashga qaror qildim.
Kod:
Do'stim menga dasturiy ta'minotni o'chirish dasturidan foydalanishni maslahat berdi va bu dasturni o'qishga vaqt ajratish uchun faqat pastadir (masalan, "for" uchun), bu ko'p o'qish (mening imtihonimda 500 ta) deganidir, lekin faqat oxirgi.
for (i = 1; i <= 500; i ++) {// faqat 500 -chi analog o'qishni oling
value = analogRead (Button);} // bu yomon o'qishdan qochish uchun vaqt ajratishga yordam beradi
Uning yordami bilan boshqa do'stim "o'qish qiymati" ni bir emas, balki bir qator qiymatlar bilan solishtirishni maslahat berdi, chunki "o'qish qiymati" bir xil tugmani bosish uchun juda ko'p qiymatlarni oladi. Masalan, "A" o'qishni beradi: 849, 850, 851 852, 853, 854, 855, shuning uchun bu 7 qiymat oralig'i: pol (852) va 3 qiymat chap va o'ng. Bu erda nima qilishimiz kerak, "o'qish qiymati" va "852" o'rtasidagi farqning mutlaq qiymatini "3" ga solishtirish.
agar (abs (o'qish qiymati-852) <= 8) {lcd.clear (); lcd.print ("A");}
6 -qadam: sotishdan keyin
7 -qadam: Haqiqat lahzasi
Ko'rib turganingizdek, dastur ba'zida tugmachalarni chalkashtirib yuboradi, lekin u hali ham ishlaydi, nazariy jihatdan bu sxemada hech qanday xato yo'q, lekin kod ko'proq kalibrlashni talab qiladi.
8 -qadam: Oxir
Umid qilamanki, sizga bu loyiha yoqdi va siz buni qilishga harakat qilyapsiz, ehtimol siz mendan yaxshiroq ish qilasiz.
Savollaringiz bo'lsa, mendan so'rang, izoh qoldiring va agar sizga yoqsa, menga ovoz berishni unutmang.
Tavsiya:
4 raqamli 7 segmentli displey 14 pinli Arduino bilan: 3 qadam
4 raqamli 7 segmentli displey 14 pinli Arduino bilan: Agar qurilma juda ko'p pimlarga ega bo'lsa, qurilma to'g'ri ishlayaptimi yoki yo'qligini tekshirish har doim yaxshi bo'ladi. Ushbu loyihada men 4 raqamli 7 segmentli 14 pinli displeyni sinab ko'rdim. Barcha 7 segment bir vaqtning o'zida 0 dan 9 gacha ko'rsatiladi.
Bir pinli klaviatura Raspberry Pi foydalanish bo'yicha qo'llanma: 9 qadam
Bir pinli klaviatura Raspberry Pi -dan foydalanish bo'yicha qo'llanma: Ogohlantirish: bu ochiq manba mahsuloti uchun qo'llanma: bitta pinli klaviatura. Bu DIY loyihasi emas. Agar siz o'zingizni taxtalar yasashni xohlasangiz, burgut fayllari o'quv qo'llanmasining oxirida topilishi mumkin. Bir pinli klaviatura nima? Bir pinli klaviatura
Klaviatura interfeysi 8051 va klaviatura raqamlarini 7 segmentda ko'rsatish: 4 qadam (rasmlar bilan)
Klaviatura interfeysi 8051 va klaviatura raqamlarini 7 segmentda ko'rsatish: Ushbu darsda men sizga klaviaturani 8051 bilan qanday bog'lashimiz va klaviatura raqamlarini 7 segmentli displeyda ko'rsatish haqida aytib beraman
ISP 6 pinli 8 pinli rozetkaga: 4 qadam
ISP 6 -pinli 8 -pinli rozetkaga: Men bu loyihani asosan 8 pinli ulanishga ega bo'lgan ATTiny45 -ni dasturlashim kerak edi, mening USBtinyISP -da (Ladyada -dan) faqat 10 -pinli va 6 -pinli ulanish mavjud. Taxminan 3-4 hafta mobaynida Internetni aylanib chiqqach, hech narsa topolmadim
Bir nechta MCU pinli ko'plab kalitlarni qanday o'qish kerak: 4 qadam
Bir nechta MCU pinli ko'plab kalitlarni qanday o'qish mumkin: Siz biron bir loyiha (loyiha) bilan shug'ullanganmisiz va loyiha o'sib boraveradi, siz unga ko'proq narsani qo'shasiz (biz buni "Feuraturizm" deb ataymiz)? Yaqinda o'tkazilgan loyihada men chastota o'lchagichini qurardim va beshta funktsiyani qo'shdim