Tugmachani Arduino-ga Ulashda Kontakt Pog'onasidan Qanday Qutulish Mumkin

Mundarija:

Tugmachani Arduino-ga Ulashda Kontakt Pog'onasidan Qanday Qutulish Mumkin
Tugmachani Arduino-ga Ulashda Kontakt Pog'onasidan Qanday Qutulish Mumkin

Video: Tugmachani Arduino-ga Ulashda Kontakt Pog'onasidan Qanday Qutulish Mumkin

Video: Tugmachani Arduino-ga Ulashda Kontakt Pog'onasidan Qanday Qutulish Mumkin
Video: Диагностика и ремонт ARDUINO UNO R3 2024, Aprel
Anonim

Biz allaqachon tugmachani Arduino bilan bog'lashni ko'rib chiqdik va kontaktlarning zanglashiga oid masalaga to'xtaldik. Bu juda zerikarli hodisa, bu tugmachani qayta-qayta bosishini keltirib chiqaradi va tugmachani bosish bilan dasturiy ishlov berishni qiyinlashtiradi. Keling, kontakt pog'onasidan qanday qutulish haqida gapiraylik.

Bog'lanish effekti bilan bog'laning
Bog'lanish effekti bilan bog'laning

Kerakli

  • - Arduino;
  • - teginish tugmasi;
  • - nominal qiymati 10 kOm bo'lgan qarshilik;
  • - yorug'lik chiqaradigan diod;
  • - simlarni ulash.

Ko'rsatmalar

1-qadam

Kontakt pog'onasi mexanik kalitlarda, tugmachalarda, almashtirish tugmachalarida va o'rni holatida keng tarqalgan hodisa. Kontaktlar odatda egiluvchanlikka ega bo'lgan metall va qotishmalardan yasalganligi sababli, jismonan yopilganda ular darhol ishonchli aloqani o'rnatmaydi. Qisqa vaqt ichida kontaktlar bir necha marta yopiladi va bir-birlarini qaytaradi. Natijada, elektr toki bir zumda emas, balki bir qator ko'tarilish va pasayishdan so'ng barqaror holat qiymatini oladi. Ushbu vaqtinchalik ta'sirning davomiyligi aloqa materialiga, o'lchamiga va dizayniga bog'liq. Rasmda teg tugmachasining kontaktlari yopilganda odatdagi osillogramma ko'rsatilgan. Ko'rinib turibdiki, barqaror holatga o'tgan paytdan boshlab bir necha millisekundlarni tashkil etadi. Bunga "sakrash" deyiladi.

Ushbu effekt yorug'lik, dvigatellar yoki boshqa inertsional sensorlar va qurilmalarni boshqarish uchun elektr zanjirlarida sezilmaydi. Ammo ma'lumotni tez o'qish va qayta ishlash mavjud bo'lgan davrlarda (chastotalar "pog'ona" impulslari bilan bir xil tartibda yoki undan yuqori), bu muammo. Xususan, 16 MGts chastotada ishlaydigan Arduino UNO, kontaktlarning zanglashiga olib borishda juda yaxshi, bitta 0 dan 1 gacha kalit o'rniga bitta va nolga teng ketma-ketlikni qabul qiladi.

Tugmachani bosish bilan zıplama bilan bog'laning
Tugmachani bosish bilan zıplama bilan bog'laning

2-qadam

Keling, kontaktlarning zanglashiga olib o'tish davri to'g'ri ishlashiga qanday ta'sir qilishini ko'rib chiqamiz. Pastga tushadigan qarshilik sxemasi yordamida soat tugmachasini Arduinoga ulaymiz. Tugmani bosish orqali biz LEDni yoqamiz va tugma yana bosilguncha uni qoldiramiz. Aniqlik uchun biz tashqi LEDni raqamli pin 13 ga ulaymiz, ammo ichki qismdan foydalanish mumkin.

Tugmani Arduino-ga tortish qarshiligi sxemasi yordamida ulash
Tugmani Arduino-ga tortish qarshiligi sxemasi yordamida ulash

3-qadam

Ushbu vazifani bajarish uchun birinchi navbatda xayolga keladigan narsa:

- tugmachaning oldingi holatini eslang;

- hozirgi holat bilan taqqoslash;

- agar holat o'zgargan bo'lsa, biz LED holatini o'zgartiramiz.

Keling, shunday eskizni yozamiz va Arduino xotirasiga yuklaymiz.

O'chirish yoqilganda, kontaktlarning zanglashiga ta'siri darhol ko'rinadi. Bu LED tugmachani bosgandan so'ng darhol yonib ketmasligi yoki yonib, keyin o'chib ketishi yoki tugmachani bosgandan so'ng darhol o'chirilmasligi, lekin yonib turishi bilan o'zini namoyon qiladi. Umuman olganda, sxema barqaror ishlamaydi. Va agar LEDni yoqish uchun bu juda muhim bo'lmasa, unda boshqa jiddiy vazifalar uchun bu shunchaki qabul qilinishi mumkin emas.

Qayta ishlashni hisobga olmasdan ishlov berish tugmachasini bosish eskizlari
Qayta ishlashni hisobga olmasdan ishlov berish tugmachasini bosish eskizlari

4-qadam

Vaziyatni to'g'irlashga harakat qilamiz. Biz bilamizki, kontaktning sakrashi kontakt yopilgandan keyin bir necha millisekundalar ichida sodir bo'ladi. Aytaylik, tugma holatini o'zgartirgandan keyin 5ms kutamiz. Biror kishi uchun bu vaqt deyarli bir lahzaga to'g'ri keladi va odamning tugmachasini bosish odatda ancha uzoq davom etadi - bir necha o'n millisekundlar. Va Arduino qisqa vaqt ichida juda yaxshi ishlaydi va bu 5ms tugmachani bosish orqali kontaktlarning zanglashiga olib chiqishiga imkon beradi.

Ushbu eskizda biz debounce () protsedurasini e'lon qilamiz (ingliz tilida "pog'ona" shunchaki "pog'ona", "de" prefiksi teskari jarayonni anglatadi), biz unga tugmaning oldingi holatini etkazib beramiz. Agar tugmachani bosish 5 msekdan ko'proq davom etsa, demak, bu haqiqatan ham press.

Matbuotni aniqlab, biz LED holatini o'zgartiramiz.

Eskizni Arduino doskasiga yuklang. Hozir hammasi yaxshi! Tugma muvaffaqiyatsiz ishlaydi, bosilganda LED biz xohlagancha holatini o'zgartiradi.

Kontaktli pog'onani hisobga olgan holda tugmachani bosib ishlov berish eskizlari
Kontaktli pog'onani hisobga olgan holda tugmachani bosib ishlov berish eskizlari

5-qadam

Shunga o'xshash funktsiyalar Bounce2 kutubxonasi kabi maxsus kutubxonalar tomonidan ta'minlanadi. Siz uni "Manbalar" bo'limidagi havoladan yoki https://github.com/thomasfredericks/Bounce2 veb-saytidan yuklab olishingiz mumkin. Kutubxonani o'rnatish uchun uni Arduino rivojlanish muhitidagi kutubxonalar katalogiga joylashtiring va IDE-ni qayta yoqing.

"Bounce2" kutubxonasida quyidagi usullar mavjud:

Bounce () - "Bounce" ob'ektini ishga tushirish;

void interval (ms) - kechikish vaqtini millisekundlarda belgilaydi;

void biriktirma (pin raqami) - tugma ulangan pinni o'rnatadi;

int update () - ob'ektni yangilaydi va agar pin holati o'zgargan bo'lsa true, aks holda false;

int read () - pinning yangi holatini o'qiydi.

Kutubxonadan foydalanib eskizimizni qayta yozamiz. Bundan tashqari, tugmachaning o'tgan holatini hozirgi holati bilan eslab, solishtirishingiz mumkin, ammo keling algoritmni soddalashtiramiz. Tugma bosilganda biz presslarni hisoblaymiz va har bir g'alati bosish LEDni yoqadi va har bir juft bosish uni o'chiradi. Ushbu eskiz ixcham, o'qilishi oson va foydalanishga qulay ko'rinadi.

Tavsiya: