Kā Atbrīvoties No Kontakta Atlēciena, Savienojot Pogu Ar Arduino

Satura rādītājs:

Kā Atbrīvoties No Kontakta Atlēciena, Savienojot Pogu Ar Arduino
Kā Atbrīvoties No Kontakta Atlēciena, Savienojot Pogu Ar Arduino

Video: Kā Atbrīvoties No Kontakta Atlēciena, Savienojot Pogu Ar Arduino

Video: Kā Atbrīvoties No Kontakta Atlēciena, Savienojot Pogu Ar Arduino
Video: Arduino IR object counter not working 2024, Maijs
Anonim

Mēs jau esam izskatījuši pogas pievienošanu Arduino un pieskārušies kontaktpersonu "atlēcieniem". Šī ir ļoti kaitinoša parādība, kas izraisa atkārtotu pogu nospiešanu un apgrūtina programmētu pogu klikšķu apstrādi. Parunāsim par to, kā atbrīvoties no kontakta atlēciena.

Kontaktu atlēciena efekts
Kontaktu atlēciena efekts

Nepieciešams

  • - Arduino;
  • - takta poga;
  • - rezistors ar nominālo vērtību 10 kOhm;
  • - Gaismas diode;
  • - savienojošie vadi.

Instrukcijas

1. solis

Kontaktu atlēciens ir izplatīta parādība mehāniskajos slēdžos, spiedpogās, pārslēgšanas slēdžos un relejos. Sakarā ar to, ka kontaktus parasti veido no metāliem un sakausējumiem, kuriem ir elastība, fiziski aizverot, tie nekavējoties nenodrošina uzticamu savienojumu. Īsā laika posmā kontakti vairākas reizes aizveras un viens otru atgrūž. Rezultātā elektriskā strāva iegūst līdzsvara stāvokli nevis uzreiz, bet gan pēc vairākiem kāpumiem un kritumiem. Šīs pārejošās iedarbības ilgums ir atkarīgs no kontakta materiāla, lieluma un dizaina. Attēlā parādīta tipiska oscilogramma, kad takta pogas kontakti ir aizvērti. Var redzēt, ka laiks no pārejas brīža uz līdzsvara stāvokli ir vairākas milisekundes. To sauc par "atlēcienu".

Šis efekts nav pamanāms elektriskās ķēdēs, lai kontrolētu apgaismojumu, motorus vai citus inerciālos sensorus un ierīces. Bet ķēdēs, kur notiek ātra informācijas nolasīšana un apstrāde (kur frekvences ir tādā pašā secībā kā "atlēciena" impulsi vai augstākas), tā ir problēma. Jo īpaši Arduino UNO, kas darbojas ar 16 MHz frekvenci, lieliski uztver kontakta atlēcienu, pieņemot vienu un nulles secību, nevis vienu slēdzi no 0 līdz 1.

Kontaktpersonas atlēciens, nospiežot pogu
Kontaktpersonas atlēciens, nospiežot pogu

2. solis

Apskatīsim, kā kontakta atlēciens ietekmē pareizu ķēdes darbību. Savienosim pulksteņa pogu ar Arduino, izmantojot nolaižamo rezistora ķēdi. Nospiežot pogu, mēs iedegsim gaismas diode un atstāsim to ieslēgtu, līdz poga tiek nospiesta vēlreiz. Skaidrības labad mēs pievienojam ārējo gaismas diodi digitālajai tapai 13, lai gan iebūvēto var iztikt.

Pogas pievienošana Arduino, izmantojot pievilkšanas rezistora ķēdi
Pogas pievienošana Arduino, izmantojot pievilkšanas rezistora ķēdi

3. solis

Lai veiktu šo uzdevumu, vispirms nāk prātā:

- atcerieties pogas iepriekšējo stāvokli;

- salīdzināt ar pašreizējo stāvokli;

- ja stāvoklis ir mainījies, tad mēs mainām LED stāvokli.

Uzrakstīsim šādu skici un ielādēsim to Arduino atmiņā.

Kad ķēde ir ieslēgta, kontakta atlēciena efekts ir uzreiz redzams. Tas izpaužas ar to, ka gaismas diode neiedegas uzreiz pēc pogas nospiešanas, vai iedegas un pēc tam nodziest, vai neizslēdzas uzreiz pēc pogas nospiešanas, bet paliek ieslēgta. Parasti ķēde nedarbojas stabili. Un, ja uzdevumam ar gaismas diodes ieslēgšanu tas nav tik kritiski, tad citiem, nopietnākiem uzdevumiem tas ir vienkārši nepieņemami.

Apstrādes pogas nospiešanas skice, neņemot vērā kontakta atlēcienu
Apstrādes pogas nospiešanas skice, neņemot vērā kontakta atlēcienu

4. solis

Mēs centīsimies salabot situāciju. Mēs zinām, ka kontakta atlēciens notiek dažu milisekunžu laikā pēc kontakta slēgšanas. Gaidīsim, teiksim, 5 ms pēc pogas stāvokļa maiņas. Šis laiks cilvēkam ir gandrīz mirklis, un, nospiežot pogu, cilvēks parasti aizņem daudz ilgāku laiku - vairākus desmitus milisekunžu. Arduino lieliski darbojas tik īsos laika periodos, un šie 5 ms ļaus tam pārtraukt kontaktu atlēcienu no pogas nospiešanas.

Šajā skicē mēs paziņosim par atlēciena () procedūru (angļu valodā "atlēciens" ir tikai "atlēciens", prefikss "de" nozīmē apgriezto procesu), kuras ievadam mēs piegādājam pogas iepriekšējo stāvokli. Ja pogas nospiešana ilgst vairāk nekā 5 ms, tad tā patiešām ir nospiešana.

Atklājot presi, mēs mainām gaismas diodes stāvokli.

Augšupielādējiet skici uz Arduino dēļa. Tagad viss ir daudz labāk! Poga darbojas bez kļūdām, nospiežot, gaismas diode maina stāvokli, kā mēs vēlējāmies.

Pogas nospiešanas apstrādes skice, ņemot vērā kontakta atlēcienu
Pogas nospiešanas apstrādes skice, ņemot vērā kontakta atlēcienu

5. solis

Līdzīgu funkcionalitāti nodrošina īpašas bibliotēkas, piemēram, Bounce2 bibliotēka. To var lejupielādēt no saites sadaļā “Avoti” vai vietnē https://github.com/thomasfredericks/Bounce2. Lai instalētu bibliotēku, ievietojiet to Arduino izstrādes vides bibliotēku direktorijā un restartējiet IDE.

Bibliotēkā "Bounce2" ir šādas metodes:

Bounce () - objekta "Bounce" inicializēšana;

void interval (ms) - iestata kavēšanās laiku milisekundēs;

void attach (piespraudes numurs) - iestata tapu, kurai pievienota poga;

int update () - atjaunina objektu un atgriež vērtību true, ja tapas statuss ir mainījies, un citādi - false;

int lasīt () - nolasa tapas jauno stāvokli.

Pārrakstīsim savu skici, izmantojot bibliotēku. Varat arī atcerēties un salīdzināt pogas iepriekšējo stāvokli ar pašreizējo, taču vienkāršosim algoritmu. Nospiežot pogu, mēs saskaitīsim preses, un katrs nepāra spiediens ieslēgs LED, un katrs vienmērīgais nospiedums to izslēgs. Šī skice izskatās kodolīga, viegli lasāma un ērti lietojama.

Ieteicams: