Mundarija:

Arduino -da raqamli klaviaturadan foydalanish: 4 qadam
Arduino -da raqamli klaviaturadan foydalanish: 4 qadam

Video: Arduino -da raqamli klaviaturadan foydalanish: 4 qadam

Video: Arduino -da raqamli klaviaturadan foydalanish: 4 qadam
Video: Подключение семисегментного индикатора к АРДУИНО / Как подключить семисегментный индикатор 2024, Noyabr
Anonim
Arduino -da raqamli klaviaturadan foydalanish
Arduino -da raqamli klaviaturadan foydalanish

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

Ishni boshlash
Ishni boshlash

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: