Jinsi Ya Kujiondoa Wakati Wa Kuunganisha Kitufe Kwa Arduino

Orodha ya maudhui:

Jinsi Ya Kujiondoa Wakati Wa Kuunganisha Kitufe Kwa Arduino
Jinsi Ya Kujiondoa Wakati Wa Kuunganisha Kitufe Kwa Arduino

Video: Jinsi Ya Kujiondoa Wakati Wa Kuunganisha Kitufe Kwa Arduino

Video: Jinsi Ya Kujiondoa Wakati Wa Kuunganisha Kitufe Kwa Arduino
Video: JINSI YA KUONDOA WOGA KWA SEKUNDE 5! 2024, Mei
Anonim

Tayari tumeangalia kuunganisha kitufe kwa Arduino na kugusia suala la mawasiliano ya "kupiga". Hili ni jambo la kukasirisha sana ambalo husababisha mashinikizo ya kifungo mara kwa mara na inafanya kuwa ngumu kushughulikia kwa kubofya vitufe. Wacha tuzungumze juu ya jinsi ya kujikwamua bounce ya mawasiliano.

Wasiliana na athari ya kurudi
Wasiliana na athari ya kurudi

Muhimu

  • - Arduino;
  • - kifungo cha busara;
  • - kontena na thamani ya nomina ya 10 kOhm;
  • - Diode inayotoa nuru;
  • - kuunganisha waya.

Maagizo

Hatua ya 1

Kuwasiliana kwa mawasiliano ni jambo la kawaida katika swichi za mitambo, vifungo vya kushinikiza, kugeuza swichi na kupeleka tena. Kwa sababu ya ukweli kwamba mawasiliano kawaida hutengenezwa kwa metali na aloi ambazo zina elasticity, wakati zimefungwa, hazianzisha uhusiano wa kuaminika mara moja. Ndani ya muda mfupi, wawasiliani hufunga mara kadhaa na kurudishana. Kama matokeo, mkondo wa umeme huchukua hali ya utulivu sio mara moja, lakini baada ya mfululizo wa kupanda na kushuka. Muda wa athari hii ya muda mfupi inategemea nyenzo za mawasiliano, saizi na muundo. Kielelezo kinaonyesha oscillogram ya kawaida wakati anwani za kitufe cha busara zimefungwa. Inaweza kuonekana kuwa wakati kutoka wakati wa kubadili hali thabiti ni milisekunde kadhaa. Hii inaitwa "bounce".

Athari hii haionekani katika nyaya za umeme kudhibiti taa, motors, au sensorer na vifaa vingine vya inertial. Lakini katika mizunguko ambayo kuna usomaji wa haraka na usindikaji wa habari (ambapo masafa ni ya mpangilio sawa na kunde za "bounce", au zaidi), hii ni shida. Hasa, Arduino UNO, ambayo inafanya kazi kwa 16 MHz, ni bora kwa kukamata bounce ya mawasiliano kwa kukubali mlolongo wa hizo na zero badala ya ubadilishaji mmoja wa 0 hadi 1.

Wasiliana na bounce wakati wa kubonyeza kitufe
Wasiliana na bounce wakati wa kubonyeza kitufe

Hatua ya 2

Wacha tuone jinsi bounce ya mawasiliano inavyoathiri operesheni sahihi ya mzunguko. Wacha tuunganishe kitufe cha saa kwa Arduino ukitumia mzunguko wa kontena la kuvuta-chini. Kwa kubonyeza kitufe, tutawasha taa ya LED na kuiacha hadi kitufe kitapobanwa tena. Kwa uwazi, tunaunganisha LED ya nje na pini ya dijiti 13, ingawa iliyojengwa inaweza kutolewa.

Kuunganisha kitufe kwa Arduino ukitumia mzunguko wa kontena la kuvuta
Kuunganisha kitufe kwa Arduino ukitumia mzunguko wa kontena la kuvuta

Hatua ya 3

Kukamilisha kazi hii, jambo la kwanza linalokuja akilini:

- kumbuka hali ya awali ya kifungo;

- kulinganisha na hali ya sasa;

- ikiwa hali imebadilika, basi tunabadilisha hali ya LED.

Wacha tuandike mchoro kama huo na upakie kwenye kumbukumbu ya Arduino.

Wakati mzunguko umewashwa, athari za kugongana kwa mawasiliano huonekana mara moja. Inajidhihirisha kwa ukweli kwamba LED haiwaki mara baada ya kubonyeza kitufe, au inawaka kisha inazima, au haizimi mara tu baada ya kubonyeza kitufe, lakini inabaki ikiwa imewaka. Kwa ujumla, mzunguko haufanyi kazi kwa utulivu. Na ikiwa kwa kazi ya kuwasha LED hii sio muhimu sana, basi kwa kazi zingine kubwa zaidi, haikubaliki tu.

Mchoro wa kubonyeza kitufe cha usindikaji bila kuzingatia bounce ya mawasiliano
Mchoro wa kubonyeza kitufe cha usindikaji bila kuzingatia bounce ya mawasiliano

Hatua ya 4

Tutajaribu kurekebisha hali hiyo. Tunajua kuwa bounce ya mawasiliano hufanyika ndani ya millisecond chache baada ya kufungwa kwa mawasiliano. Ngoja tusubiri, sema, 5ms baada ya kubadilisha hali ya kitufe. Wakati huu kwa mtu ni karibu mara moja, na kubonyeza kitufe na mtu kawaida huchukua muda mrefu zaidi - makumi ya milliseconds. Na Arduino hufanya kazi vizuri na vipindi vifupi kama hivyo, na hizi 5ms zitaruhusu kukata kasi ya mawasiliano kutoka kwa kubonyeza kitufe.

Katika mchoro huu, tutatangaza utaratibu wa kujiondoa () ("bounce" kwa Kiingereza ni "bounce" tu, kiambishi awali "de" inamaanisha mchakato wa nyuma), kwa pembejeo ambayo tunasambaza hali ya awali ya kitufe. Ikiwa kitufe cha kifungo kinachukua zaidi ya msec 5, basi ni vyombo vya habari.

Kwa kugundua vyombo vya habari, tunabadilisha hali ya LED.

Pakia mchoro kwenye ubao wa Arduino. Kila kitu ni bora zaidi sasa! Kitufe kinafanya kazi bila kukosa, kinapobanwa, hali ya LED inabadilika, kama tulivyotaka.

Mchoro wa usindikaji wa kitufe cha kifungo, ukizingatia bounce ya mawasiliano
Mchoro wa usindikaji wa kitufe cha kifungo, ukizingatia bounce ya mawasiliano

Hatua ya 5

Utendaji sawa hutolewa na maktaba maalum kama maktaba ya Bounce2. Unaweza kuipakua kutoka kwa kiunga kwenye sehemu ya "Vyanzo" au kwenye wavuti https://github.com/thomasfredericks/Bounce2. Ili kusanikisha maktaba, iweke kwenye saraka ya maktaba ya mazingira ya maendeleo ya Arduino na uanze tena IDE.

Maktaba ya "Bounce2" ina njia zifuatazo:

Bounce () - uanzishaji wa kitu cha "Bounce";

muda batili (ms) - huweka wakati wa kuchelewa kwa milliseconds;

ambatisha batili (namba ya siri) - inaweka pini ambayo kifungo kimeunganishwa;

sasisho la int () - inasasisha kitu na inarudi kweli ikiwa hali ya pini imebadilika, na uwongo vinginevyo;

kusoma () - inasoma hali mpya ya pini.

Wacha tuandike mchoro wetu kwa kutumia maktaba. Unaweza pia kukumbuka na kulinganisha hali ya kitufe cha zamani na ile ya sasa, lakini wacha turahisishe hesabu. Kitufe kinapobanwa, tutahesabu mitambo, na kila vyombo vya habari visivyo vya kawaida vitawasha LED, na kila vyombo vya habari hata vitaizima. Mchoro huu unaonekana mfupi, rahisi kusoma na rahisi kutumia.

Ilipendekeza: