Mundarija:
- 1 -qadam: Ishga kirishish
- 2 -qadam: 12 raqamli klaviatura yordamida
- 3 -qadam: 16 raqamli klaviatura yordamida
- 4 -qadam: Misol loyihasi - PIN -kodga kirish tizimi
Video: Arduino -da raqamli klaviaturadan foydalanish: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Raqamli klaviatura sizning loyihalaringiz uchun turli xil interfeyslar uchun oddiy oxirgi foydalanuvchi alternativasini taqdim etishi mumkin. Yoki sizga ko'p tugmalar kerak bo'lsa, ular sizga qurilish bilan bog'liq ko'p vaqtni tejash imkonini beradi. Biz ularni Arduino kutubxonasidan foydalanib bog'laymiz, so'ng foydali eskiz bilan yakunlaymiz.
1 -qadam: Ishga kirishish
Klaviaturani qayerdan olishingizdan qat'i nazar, ma'lumot varag'ini olishingiz mumkinligiga ishonch hosil qiling - bu ularni ulashda hayotni osonlashtiradi. Masalan - bu qadamdagi rasm.
Ma'lumotlar varaqasi muhim, chunki u sizga klaviaturadagi qatorlar va ustunlar uchun qaysi pin yoki ulagichlar kerakligini aytadi. Agar sizda ma'lumotlar varaqasi bo'lmasa - qatorlar va ustunlar uchun qaysi kontaktlar borligini qo'lda aniqlash kerak bo'ladi.
Buni multimetrning uzluksizligi funktsiyasi yordamida amalga oshirish mumkin. Bir probni 1 -pinga, ikkinchisini 2 -pinga qo'yib boshlang va tugmachalarni birma -bir bosing. Qachon tugma zanjirni tugatganini yozib oling, so'ngra keyingi pimga o'ting. Tez orada qaysi biri ekanligini bilib olasiz. Masalan, klaviatura pimi 1 va 5 "1", 2 va 5 "4" va boshqalar uchun.
Shu nuqtada Arduino kutubxonasi klaviaturasini yuklab oling va o'rnating. Endi biz oddiy misollarda ikkala klaviaturani qanday ishlatishni ko'rsatamiz.
2 -qadam: 12 raqamli klaviatura yordamida
Biz ko'rsatish uchun kichik qora klaviatura, Arduino Uno bilan mos keladigan va I2C interfeysli LCD dan foydalanamiz. Agar sizda LCD bo'lmasa, siz har doim matnni ketma -ket monitorga yuborishingiz mumkin.
LCD -ni sim bilan ulang, so'ngra klaviaturani Arduino -ga quyidagicha ulang: 1 -qator Arduino raqamli 5 -klaviatura 2 -qator Arduino raqamli 4 -klaviatura 3 -qator Arduino raqamli 3 -klaviatura qatori 4 -Arduino raqamli 2 Arduino raqamli 7Keypad ustun 3 - Arduino raqamli 6 - Agar sizning klaviaturangiz biznikidan farq qilsa, eskizdagi chiziqlarga e'tibor bering:
// klaviatura turining ta'rifi
Raqamlar qatorini o'zgartirish kerak bo'lganda, rowPins [ROWS] va colPins [COLS]. Siz raqamli pin raqamlarini mos ravishda klaviatura satrlari va ustunlari bilan bog'laysiz.
Bundan tashqari, qator tugmachalari ma'lum bir tugma bosilganda LCD displeyda ko'rsatilgan qiymatlarni saqlaydi. Ko'ryapsizmi, biz uni jismoniy klaviatura bilan moslashtirdik, lekin siz uni xohlaganingizga o'zgartirishingiz mumkin. Hozircha, qator/pin raqamlarini ajratishdan qoniqsangiz, quyidagi eskizni kiriting va yuklang:
/ * Raqamli klaviatura va I2C LCD https://tronixstuff.com Arduino uchun klaviatura kutubxonasidan foydalanadi https://www.arduino.cc/playground/Code/Keypad by Mark Stanley, Aleksandr Brevig */
#"Keypad.h" ni qo'shing
#I2C LCD uchun "Wire.h" // qo'shish #"LiquidCrystal_I2C.h" // I2C avtobus LCD moduli uchun // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27, 16, 2); // 16 ta belgi va 2 qatorli displey uchun LCD manzilni 0x27 ga o'rnating
// klaviatura turining ta'rifi
const bayt ROWS = 4; // to'rt qatorli const bayt COLS = 3; // uchta ustunli char tugmalari [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};
bayt rowPins [ROWS] = {
5, 4, 3, 2}; // klaviatura baytlari colPins [COLS] = {8, 7, 6}; // klaviatura ustun ustunlariga ulanish
int soni = 0;
Klaviatura klaviaturasi = Klaviatura (makeKeymap (tugmalar), rowPins, colPins, ROWS, COLS);
bo'sh o'rnatish ()
{lcd.init (); // lcd lcd.backlight () ni ishga tushirish; // LCD orqa nuri yoqish}
bo'sh halqa ()
{char tugmachasi = keypad.getKey (); agar (kalit! = NO_KEY) {lcd.print (kalit); hisoblash ++; agar (hisoblash == 17) {lcd.clear (); hisoblash = 0; }}}
Va eskiz natijalari videoda ko'rsatilgan. Shunday qilib, endi siz eskizda ishlatish uchun tugmachalarni qanday qilib ma'lumotlarga tarjima qilishni ko'rishingiz mumkin. Endi biz bu namoyishni kattaroq klaviatura bilan takrorlaymiz.
3 -qadam: 16 raqamli klaviatura yordamida
Biz ko'rsatish uchun 4 × 4 kattaroq klaviatura, Arduino Uno-ga mos keladigan va Akafugu-dan I2C LCD-ni o'zgartirish uchun foydalanamiz. Shunga qaramay, agar sizda LCD bo'lmasa, siz har doim matnni ketma -ket monitorga yuborishingiz mumkin. LCD -ni ulang, so'ngra klaviaturani Arduino -ga quyidagicha ulang:
- Klaviatura qatori 1 (sakkizinchi pin) Arduino raqamli 5 -ga
- Klaviatura qatori 2 (pin 1) Arduino raqamli 4 ga
- Klaviatura 3 -qator (2 -pin) Arduino raqamli 3 -ga
- Klaviatura qatori 4 (pin 4) Arduino raqamli 2 ga
- Klaviatura ustuni 1 (pin 3) Arduino raqamli 9 ga
- Klaviatura ustuni 2 (pin 5) Arduino raqamli 8 ga
- Klaviatura ustuni 3 (pin 6) Arduino raqamli 7 ga
- Klaviatura ustuni 4 (pin 7) Arduino raqamli 6 ga
Endi eskiz uchun - biz kattaroq raqamli klaviaturani qanday joylashtirganimizga e'tibor bering: char tugmachasidagi qo'shimcha ustun colPins qatoridagi qo'shimcha pin va bayt COLS = 4.
/ * Raqamli klaviatura va I2C LCD https://tronixstuff.com Arduino uchun klaviatura kutubxonasidan foydalanadi https://www.arduino.cc/playground/Code/Keypad by Mark Stanley, Aleksandr Brevig */
#"Keypad.h" ni qo'shing
#"Wire.h" ni qo'shing // I2C LCD uchun #"TWILiquidCrystal.h" ni qo'shing // https://store.akafugu.jp/products/26 LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
const bayt ROWS = 4; // to'rt qator
const bayt COLS = 4; // to'rtta ustunli char tugmalari [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; bayt rowPins [ROWS] = {5, 4, 3, 2}; // klaviatura baytlari colPins [COLS] = {9, 8, 7, 6}; // klaviaturaning ustunli pinoutlariga ulanish int count = 0;
Klaviatura klaviaturasi = Klaviatura (makeKeymap (tugmalar), rowPins, colPins, ROWS, COLS);
bo'sh o'rnatish ()
{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Klaviatura tekshiruvi!"); kechikish (1000); lcd.clear (); }
bo'sh halqa ()
{char key = keypad.getKey (); agar (kalit! = NO_KEY) {lcd.print (kalit); Serial.print (kalit); hisoblash ++; if (count == 17) {lcd.clear (); hisoblash = 0; }}}
Va yana yuqoridagi eskiz natijalarini videoda ko'rishingiz mumkin.
Misol uchun, raqamli klaviaturadan eng ko'p talab qilinadigan loyiha …
4 -qadam: Misol loyihasi - PIN -kodga kirish tizimi
Raqamli klaviatura uchun eng ko'p talab qilinadigan narsa "PIN" uslubidagi ilova bo'lib ko'rinadi, bu erda Arduino klaviaturaga to'g'ri kiritilgan raqam asosida biror narsa qilishni buyuradi. Quyidagi eskizda oldingi eskiz uchun tasvirlangan uskuna ishlatiladi va olti xonali PIN-kodni kiritish tizimi amalga oshiriladi.
Amalga oshiriladigan amallarni to'g'riPIN () va noto'g'riPIN () funktsiyalariga kiritish mumkin. PIN -kod esa PIN -kod qatoriga o'rnatiladi [6]. Bir oz qo'shimcha ish bilan siz PIN-kodni o'zgartirish funktsiyasini yaratishingiz mumkin.
// 16-raqamli raqamli klaviatura bilan PIN-kod // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
const bayt ROWS = 4; // to'rt qator
const bayt COLS = 4; // to'rtta ustunli char tugmalari [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; bayt rowPins [ROWS] = {5, 4, 3, 2}; // klaviatura baytlari colPins [COLS] = {9, 8, 7, 6}; // klaviatura ustun ustunlariga ulanish
Klaviatura klaviaturasi = Klaviatura (makeKeymap (tugmalar), rowPins, colPins, ROWS, COLS);
PIN kod [6] = {
'1', '2', 'A', 'D', '5', '6'}; // bizning sirli (!) raqamli char urinishimiz [6] = {'0', '0', '0', '0', '0', '0'}; // solishtirish uchun ishlatiladi int z = 0;
bo'sh o'rnatish ()
{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("PIN -kodni qulflash"); kechikish (1000); lcd.clear (); lcd.print ("PIN kodni kiriting …"); }
void correctPIN () // agar to'g'ri PIN kod kiritilgan bo'lsa, buni bajaring
{lcd.print (" * To'g'ri PIN -kod *"); kechikish (1000); lcd.clear (); lcd.print ("PIN kodni kiriting …"); }
noto'g'ri VINPIN () // noto'g'ri PIN kiritilsa buni bajaring
{lcd.print (" * Qayta urinish *"); kechikish (1000); lcd.clear (); lcd.print ("PIN kodni kiriting …"); }
bekor checkPIN ()
{int to'g'ri = 0; int i; uchun (i = 0; i <6; i ++) {
agar (urinish == PIN )
{to'g'ri ++; }} if (to'g'ri == 6) {to'g'riPIN (); } boshqa {noto'g'riPIN (); }
uchun (int zz = 0; zz <6; zz ++) {urinish [zz] = '0'; }}
o'qishni bekor qilish tugmachasi ()
{char key = keypad.getKey (); if (key! = NO_KEY) {urinish [z] = kalit; z ++; switch (key) {case '*': z = 0; tanaffus; holat '#': z = 0; kechikish (100); // qo'shimcha o'chirish uchun lcd.clear (); checkPIN (); tanaffus; }}}
bo'sh halqa ()
{readKeypad (); }
Loyiha videoda namoyish etilgan.
Shunday qilib, endi siz Arduino tizimlarida o'n ikki va o'n olti tugmachali klaviaturadan foydalanish imkoniyatiga egasiz. Ishonchim komilki, siz yaqin kelajakda klaviatura yordamida foydali va qiziqarli narsalarni o'ylab topasiz.
Bu xabarni pmdway.com sizga etkazib beradi - ishlab chiqaruvchilar va elektronika ixlosmandlari uchun hamma narsa, butun dunyo bo'ylab bepul etkazib berish.
Tavsiya:
Raqamli eshiklarning kuchlanishini o'lchash uchun sxemadan foydalanish: 7 qadam
Raqamli eshiklar kuchlanishini o'lchash uchun elektrondan foydalanish: Raqamli davralarda odatda 5 voltli quvvat manbalari ishlatiladi. TTL seriyasidagi 5v -2.7 voltli raqamli kuchlanish (raqamli o'rnatilgan chip turi) yuqori hisoblanadi va 1. raqamli kuchlanishlarga ega. 0-0.5 shakli past deb hisoblanadi va
CircuitPython bilan 4x4 klaviaturadan foydalanish: 4 qadam
CircuitPython bilan 4x4 klaviaturadan foydalanish: Bu arzon klaviatura sizning CircuitPython loyihalaringizga raqamli kiritishning oddiy usulini taklif qiladi. Men uni Adafruit ItsyBitsy M0 ekspresida ishlataman. Sizga kerak bo'ladi: klaviatura - meniki 4x4ItsyBitsy M0 Express yoki shunga o'xshash boardMu Editor o'rnatilgan
Raqamli va ikkilik soat 8 raqamli X 7 segmentli LED displeyda: 4 qadam (rasmlar bilan)
Raqamli va ikkilik soat 8 ta raqamli X 7 segmentli LED displeyda: Bu mening raqamli & 8 dyuymli x 7 segmentli LED displey yordamida ikkilik soat. Men odatiy qurilmalar, xususan, soatlar uchun yangi xususiyatlar berishni yaxshi ko'raman va bu holda ikkilik soat uchun 7 segmentli displeydan foydalanish noan'anaviy va
Geek sumkasi - O'lik klaviaturadan 101 ta foydalanish 1 -qism: 8 qadam
Geek sumkasi - O'lik klaviaturadan 101 ta foydalanish 1 -qism: OK, ehtimol, o'lik klaviaturadan umuman 101 xil foydalanish mumkin emas, lekin biz qanchalik uzoqqa borayotganimizni ko'ramiz. Bizning mahalliy Geek Central - " Elektron klubi " (http://carrierdetect.com/?cat=23) - Glazgoda menga sandiq berdi
Raqamli tanlov panelini yaratish uchun mis lentasidan foydalanish: 4 qadam
Raqamli tanlov panelini yaratish uchun mis lentasidan foydalanish: Men bu texnikani qisman baham ko'raman va qisman Instructables -dan qanday foydalanishni o'rganyapman. Texnikani hujjatlashtirishda yoki Instructables -dan foydalanishimda muammolar bo'lsa, izohlarda menga xabar bering - rahmat! Menga uzoq qator kerak edi