Takt pogas diagramma. Pogas pievienošana Arduino. Režīmu pārslēgšana, izmantojot pogu

Poga ir plaši pazīstama mehāniska ierīce, kas var aizvērt un atvērt elektriskā ķēde pēc personas lūguma. Ir daudz veidu pogas, kas darbojas saskaņā ar dažādiem noteikumiem. Piemēram, šajā apmācībā izmantotā spiedpoga pabeidz ķēdi tikai tik ilgi, kamēr pirksts to nospiež. Savukārt atvērtā poga, nospiežot, pārtrauc ķēdi.

Ir pogas ar kontaktu grupu, dažas no kurām nospiežot pārtrauc ķēdi, bet citas šajā laikā aizveras. Šo pogu mazās versijas bieži sauc par mikroslēdžiem.

Takt pogas var atrast gandrīz katrā elektroniskā ierīce: datora tastatūrā, tālrunī, televizora tālvadības pultī utt.

Ir fiksācijas pogas, kas darbojas kā poga uz lodīšu pildspalvas: vienu reizi nospiežot - ķēde tiek aizvērta, otrreiz - tā saplīst. Tālāk redzamais fotoattēls ir tikai viens no tiem. Bloķēšanas pogas ir ērti lietojamas, lai pārslēgtu ierīces darbības režīmu. Piemēram, varat pārslēgt barošanas avotu: akumulatoru vai barošanas avotu.

Vai arī cita iespēja - lielas pogas aprīkojuma avārijas apturēšanai. Tie ir nokrāsoti košās krāsās, lai piesaistītu cilvēku uzmanību. Būtībā tās ir parastas atvēršanas taustes pogas vai pogas ar aizbīdni.

Šīs ir tikai dažas no iespējām. Papildus pogām elektrības pasaulē ir arī citi mehānismi, piemēram, pārslēgšanas slēdži un slēdži. Visi no tiem ir paredzēti, lai mehāniski kontrolētu strāvas plūsmu ķēdē.

Pogas pievienošana

Tātad, strādāsim ar vienkāršāko takta pogu, ar kuru mēģināsim pieslēgties Arduino Uno. Parasti, strādājot ar bezlodētiem maizes dēļiem, tiek izmantota poga ar lodēšanas tapām. Fotogrāfijā nodarbības sākumā var redzēt, ka šādai pogai ir četras nedaudz saliektas tapas. Ir pogas ar divām tiešajām izejām, tās ir piemērotas arī mūsu aktivitātēm.

Ieslēgts elektriskās diagrammas poga izskatās šādi:

Ja paskatās četrtaktu pogas iekšpusē, jūs varat redzēt šo diagrammu:

Parasti takta pogas tapas tiek novietotas korpusa pretējās pusēs pa pāriem. Tas ir, mēs varam izmantot vai nu kontaktu pāri vienā pusē, vai pāri no otras puses.

Un šādi izskatās divu tapu pogas diagramma.

Ar šo pogu ir grūti sajaukt: divi kontakti, kas savienojas, nospiežot pogu.

Uz maizes dēļa abu veidu taktu pogas parasti tiek novietotas šādi:

Tagad mēģināsim salikt vienkāršāko ķēdi bezlodētajā maizes plāksnē, kas demonstrēs pogas darbību. Mēs iedegsim LED.

Iegūtā ķēde veic vienkāršu funkciju: nospiediet pogu - LED iedegas, atlaidiet to - tas nodziest.

Savienojums ar Arduino Uno

Tagad, kad takta pogas funkcija ir ārkārtīgi skaidra, saliksim ķēdi ar pogu un LED un savienosim tos ar kontrolieri. Izvirzīsim sev vienkāršu uzdevumu: ļaujiet Arduino Uno LED mirgot trīs reizes, kad vienreiz nospiežat Arduino Uno pogu.

Shematiska diagramma


Izskats izkārtojumu


Šajā diagrammā mēs redzam jau pazīstamo shēmu. Mēs redzam arī pogu, kas savienota ar Arduino tapu Nr. 3. Šeit diezgan pamatoti var rasties jautājums: kāpēc mēs arī savienojām pogu ar zemi caur 10 kOhm rezistoru? Lai risinātu šo problēmu, iedomāsimies, ka mēs savienojām pogu, izmantojot “naivu” ķēdi bez papildu rezistoriem.

Šeit starp tapu Nr.3 un zemi ir neliels kondensators, kas var uzkrāt lādiņu. Daudziem mikrokontrolleriem ir šī funkcija.

Tagad iedomājieties, ka mēs aizveram pogu. Sāk strāva tecēt no +5V, taisni uz kontaktu Nr.3, vienlaicīgi lādējot jaudu. Arduino veiksmīgi reģistrē pogas nospiešanu. Bet pēc tam, kad esam noņēmuši pirkstu no pulksteņa pogas, pretēji mūsu cerībām, mikrokontrolleris turpina uzskatīt, ka poga ir nospiesta! Protams, jo uzlādēts kondensators pamazām atbrīvo uzkrāto lādiņu uz kāju Nr.3. Tas turpināsies, līdz kapacitāte tiek izlādēta zem loģiskā viena līmeņa.

ROC pulksteņa pogas moduļa pievienošana Arduino

Īpaši jūsu projektiem mēs, RobotClass, esam izveidojuši moduli ar divām takts pogām. Modulim jau ir nepieciešamie rezistori un pat divas gaismas diodes, kas norāda pogu nospiešanu.


Izdomāsim, kā savienot šo moduli ar Arduino Uno.

Shematiska diagramma


Izkārtojuma izskats


Kā redzat, neatkarīgi no tā, kādas pogas mēs izmantojam, savienojuma shēma daudz nemainās. Nemainīsies arī programma darbam ar viņiem.

Programma darbam ar pogu Arduino

Beidzot esam izdomājuši savas shēmas nianses un esam gatavi rakstīt programmu. Programmatūras pamācībā mēs uzzinājām par tapu iestatīšanas funkcijām pinMode un digitālās izvades funkcija digitalWrite. Šoreiz mums ir nepieciešama vēl viena svarīga funkcija, kas nodrošina informācijas ievadi mikrokontrollerā:

DigitalRead(kontakta_numurs);

Šī funkcija atgriež Būla vērtību, ko Arduino nolasīja no dotās tapas. Tas nozīmē, ka, ja kontaktam tiek pievienots +5 V, funkcija atgriezīsies patiesība*. Ja kontakts ir savienots ar zemi, mēs iegūstam vērtību meli. Programmā C++ patiesais un nepatiesais ir attiecīgi līdzvērtīgi skaitļiem 1 un 0.

Lai mūs interesējošais kontakts strādātu informācijas ievades režīmā, mums tas būs jāiestata noteiktā režīmā:

PinMode(pin_skaitlis, IEVADE);

Visbeidzot, saliksim visu kopā un uzrakstīsim programmu.

Const int led = 2;
const int poga = 3;
int val = 0;

nederīgs iestatījums())(
pinMode(led, OUTPUT);
pinMode(poga, INPUT);
}

tukšuma cilpa ()
val = digitalRead(poga);
if(val == AUGSTS)(
// cilpa no 0 līdz 2, soli pa 1
for(int i=0; i<3; i++){
digitalWrite (LED, HIGH);
kavēšanās (500);
digitalWrite(led, LOW);
kavēšanās (500);
}
}
}

Mēs ielādējam programmu Arduino Uno un pārbaudām programmas darbību. Ja viss ir izdarīts pareizi, tam vajadzētu izskatīties kā attēlā:

Nu, tas arī viss. Tagad mēs varam vadīt savas ierīces, izmantojot pogas. Ja esi jau pabeidzis nodarbību uz, tad varēsim izgatavot pulksteni ar modinātāju!

Sprūda pogas programma

Vēl viens pieminēšanas vērts piemērs ir sprūda poga. Tas darbojas šādi: nospiediet pogu vienu reizi - LED iedegas, nospiediet to otrreiz - tas nodziest.

Lai ieviestu šo pogas darbību, mums ir nepieciešams papildu mainīgais, ko bieži sauc par “stāvokļa mainīgo” vai “karodziņu”.

Const int led = 2;
const int poga = 3;
int val = 0;
baitu stāvoklis = 0; // stāvokļa mainīgais
nederīgs iestatījums())(
pinMode(led, OUTPUT);
pinMode(poga, INPUT);
}
tukšuma cilpa ()
// ierakstiet pogas stāvokli mainīgajam val
val = digitalRead(poga);
// ja pogas stāvoklis ir patiess, veiciet darbību
if(val == AUGSTS)(
// mainīt stāvokli uz pretējo
stāvoklis = !stāvoklis;
ja(stāvoklis == AUGSTS)(
// ja pašreizējais stāvoklis ir patiess, iededziet LED
digitalWrite (LED, HIGH);
) cits (
// ja pašreizējais stāvoklis ir nepatiess, izslēdziet LED
digitalWrite(led, LOW);
}
kavēšanās (300);
}
}

Mēs ielādējam programmu Arduino un pārbaudām ķēdes darbību. Ātri nospiediet pogu, un iedegsies gaismas diode. Nospiediet vēlreiz, un tas nodzisīs. Bet, ja nospiežat pogu un neatlaižat to, gaismas diode sāks mirgot ar 600 ms periodu! Kāpēc tas tā ir? Mēģiniet to izdomāt.

Uzdevumi

Praksē mēģināsim atrisināt dažas vienkāršas problēmas ar pogu un LED.

  • Ķēdē ir divas pogas un viena gaismas diode. Ļaujiet gaismas diodei iedegties, nospiežot pirmo pogu, un nodziest, nospiežot otro pogu.
  • Klavieres. Ķēdē ir septiņas pogas un viens skaļrunis. Nospiežot katru no septiņām pogām, skaļrunim ir jāatskaņo atbilstošā nots. Būs jāmācās.
  • Spēle "Kovboji". Ķēdē ir divas pogas, viens zummers un divas gaismas diodes. Pēc programmas palaišanas skaņas signālam ir jāatskan īsa skaņa. Tūlīt pēc tam katram spēlētājam pēc iespējas ātrāk jānospiež sava poga. Spēlētājam, kurš to izdarīs pirmais, būs LED gaisma. Jums būs jāizpēta nodarbība par pārtraukumiem.

Pogas sensora pievienošana Arduino prasa noteiktas zināšanas un prasmes. Šajā rakstā mēs runāsim par to, kas ir taktiskā poga, kas ir pogas atlēciens, kā pareizi savienot pogu ar uzvilkšanas un nolaižamo rezistoru, kā ar pogu vadīt gaismas diodes un citas ierīces.

Poga (vai spiedpogas slēdzis) ir vienkāršākais un pieejamākais no visu veidu sensoriem. Noklikšķinot uz tā, jūs nosūtāt signālu kontrollerim, kas pēc tam noved pie dažām darbībām: ieslēdzas gaismas diodes, tiek atskaņotas skaņas, ieslēdzas motori. Savā dzīvē mēs bieži sastopamies ar dažādiem slēdžiem un ļoti labi pazīstam šo ierīci.

Takt pogas un slēdžu pogas

Kā parasti, sadaļu sākam ar vienkāršām lietām, kas ir interesantas tikai iesācējiem. Ja zināt pamatus un vēlaties uzzināt par dažādām iespējām pogas savienošanai ar Arduino, varat izlaist šo rindkopu.

Kas ir poga? Būtībā šī ir diezgan vienkārša ierīce, kas aizver un atver elektrisko tīklu. Šo aizvēršanu/atvēršanu varat veikt dažādos režīmos, vienlaikus fiksējot vai nefiksējot savu pozīciju. Attiecīgi visas pogas var iedalīt divās lielās grupās:

  • Slēdžu pogas ar fiksāciju. Pēc atbrīvošanas viņi atgriežas sākotnējā stāvoklī. Kad atkarībā no sākotnējā stāvokļa tās tiek sadalītas parasti aizvērtās un parasti atvērtās pogās.
  • Momentārās pogas (tact pogas). Tie ir fiksēti un paliek tādā stāvoklī, kādā tie tika atstāti.

Dažādām pogām ir ļoti daudz iespēju, tas patiešām ir viens no visizplatītākajiem elektronisko komponentu veidiem.






Arduino pogas vienkāršiem projektiem

Savos projektos mēs strādāsim ar ļoti vienkāršām četru kāju pulksteņa pogām, kas ir iekļautas gandrīz jebkurā Arduino komplektā. Poga ir slēdzis ar diviem kontaktu pāriem. Vienā pārī esošie kontakti ir savienoti viens ar otru, tāpēc ķēdē nebūs iespējams ieviest vairāk par vienu slēdzi, bet vienlaikus var vadīt divus paralēlus segmentus, tas var noderēt.

Atkarībā no situācijas var izveidot gan ķēdes ar normāli slēgtiem, gan normāli atvērtiem kontaktiem – atliek tikai attiecīgi izveidot savienojumus ķēdē.

Lietošanas ērtībai taktiskajai pogai parasti ir plastmasas vāciņš, kas acīmredzami pieguļ pogai un piešķir projektam mazāk hakeram līdzīgu izskatu.

Arduino pogas pievienošana

Gaismas diodes ieslēgšana un izslēgšana, izmantojot pogu

Sāksim ar vienkāršāko veidu, kā savienot takta pogu. Apsveriet ķēdi ar Arduino kā strāvas avotu, LED, 220 omu ierobežojošo rezistoru un pogu, kas aizvērs un atvērs ķēdi.

Savienojot pogu ar diviem kāju pāriem, ir svarīgi izvēlēties pareizos NC kontaktus. Uzmanīgi apskatiet attēlu: pogas sānos atrodas kāju pāri. Pati poga ir kvadrātveida, taču attālumi starp kontaktu pāriem ir vizuāli pamanāmi: uzreiz var izvēlēties divus vienā pusē un divus otrā pusē. Tātad slēdzis tiks ieviests starp vienu “pāri” pusē. Lai iekļautos ķēdē, mēs savienojam ar vienu un otru kontaktu, starp kuriem ir minimālais attālums. Otrais kontaktu pāris vienkārši dublē pirmo.

Ja jums ir cita veida slēdzis, varat droši izvēlēties kontaktus no pretējiem stūriem (uz dažām pogām ir īpaša atzīme padziļinājuma veidā, pēc kuras var noteikt, kurā pusē atrodas pārī savienotie kontakti). Visuzticamākais veids, kā noteikt pareizās kājas, ir zvanīt kontaktus ar testeri.

Pašai shēmai ar pogu, LED un Arduino kontrolieri īpaši paskaidrojumi nav nepieciešami. Poga pārtrauc ķēdi, gaismas diode neiedegas. Nospiežot, ķēde aizveras un LED iedegas. Ja sajaucat kontaktus (ieslēdziet pogas caur aizvērtiem pārī savienotiem kontaktiem), poga nedarbosies, jo ķēde nekad netiks atvērta. Vienkārši nomainiet kontaktus.

Pogas pievienošana ar uzvilkšanas rezistoru

Tagad savienosim pogu ar Arduino, lai mēs varētu nolasīt tās stāvokli skicē. Lai to izdarītu, mēs izmantosim šādu shēmu.

Mirgojoša gaismas diode pēc pogas nospiešanas

Iepriekšējā piemērā ar gaismas diodēm mēs pievienojām pogu Arduino platei un sapratām, kā tā darbojas. Gaismas diode ieslēdzās un izslēdzās, bet darīja to pilnīgi pasīvā režīmā - pats kontrolieris te bija absolūti lieks, varēja nomainīt pret baterijām. Tāpēc padarīsim mūsu jauno projektu “inteliģentāku”: nospiežot pogu, mēs liksim LED indikatoram nepārtraukti mirgot. To nevar izdarīt ar parasto shēmu ar spuldzi un slēdzi - mēs izmantosim mūsu mikrokontrollera jaudu, lai atrisinātu šo, lai arī vienkāršu, bet ne triviālu uzdevumu.

Ķēdes fragments ar LED jau mums ir pazīstams. Mēs samontējām parasto bāku ar LED un ierobežojošo rezistoru. Bet otrajā daļā mēs redzam pazīstamu pogu un vēl vienu rezistoru. Lai gan mēs neiedziļināsimies detaļās, mēs vienkārši saliksim ķēdi un augšupielādēsim vienkāršu skici Arduino. Visi ķēdes elementi ir iekļauti vienkāršākajos Arduino sākuma komplektos.

/* Iezīmējiet ķēdi, izmantojot taustes pogu un gaismas diode. Gaismas diode mirgo, kamēr poga ir nospiesta.

Poga tiek pievilkta pie zemes, tās nospiešana atbilst HIGH pie ieejas */ const int PIN_BUTTON = 2; const int PIN_LED = 13; void setup() ( Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() ( // Iegūstiet pogas stāvokli int buttonState = digitalRead(PIN_BUTTON); Serial.println(buttonState); // Ja tiek nospiesta poga nav, tad mēs neko nedarām if (!buttonState) ( delay(50); return; ) // Šis koda bloks tiks izpildīts, ja poga tiks nospiesta // LED mirgo digitalWrite(PIN_LED, HIGH delay( 1000 , LOW (1000);

Nospiediet un turiet - LED mirgo. Atlaid - tas nodziest. Tieši tas, ko gribējām. Priekā sasit plaukstas un sākam analizēt paveikto.

  1. Apskatīsim skici. Mēs tajā redzam diezgan vienkāršu loģiku.
  2. Nosakiet, vai poga ir nospiesta.
  3. Ja poga netiek nospiesta, mēs vienkārši izejam no cilpas metodes, neko neieslēdzot un nemainot.
    1. Ja poga tiek nospiesta, mēs mirgojam, izmantojot standarta skices fragmentu:
    2. Ieslēdziet LED, pieslēdzot spriegumu vajadzīgajam portam
    3. Mēs veicam nepieciešamo pauzi, kad iedegas LED
    4. Izslēdziet LED

Mēs veicam nepieciešamo pauzi, kad gaismas diode ir izslēgta

Skicē esošās pogas darbības loģika var būt atkarīga no savienojuma metodes ar uzvilkšanas rezistoru. Par to mēs runāsim nākamajā rakstā.

Strādājot ar pogām, mēs varam saskarties ar ļoti nepatīkamu parādību, ko sauc par pogu atlēcienu. Kā norāda pats nosaukums, šo parādību izraisa spiedpogu slēdža iekšpusē esošo kontaktu pļāpāšana. Metāla plāksnes nesaskaras viena ar otru acumirklī (lai gan ļoti ātri mūsu acīm), tāpēc kontakta zonā īslaicīgi rodas sprieguma pārspriegumi un kritumi. Ja mēs neparedzam šādu “atkritumu” signālu parādīšanos, mēs uz tiem reaģēsim katru reizi un varam novest savu projektu uz māju.

Lai novērstu atlēcienus, tiek izmantoti programmatūras un aparatūras risinājumi. Īsumā mēs pieminēsim galvenās pļāpāšanas novēršanas metodes:

  • Mēs pievienojam skicē 10–50 milisekundes pauzi starp vērtību apkopošanu no Arduino tapas.
  • Ja izmantojam pārtraukumus, tad programmatūras metodi nevar izmantot un veidojam aparatūras aizsardzību. Vienkāršākais no tiem ir RC filtrs ar kondensatoru un pretestību.
  • Lai iegūtu precīzāku atlēcienu, tiek izmantots aparatūras filtrs, izmantojot Schmidt trigeri. Šī opcija ļaus iegūt gandrīz ideālas formas signālu pie Arduino ieejas.

Šeit varat atrast sīkāku informāciju par veidiem, kā tikt galā ar pļāpāšanu.

Režīmu pārslēgšana, izmantojot pogu

Lai noteiktu, vai poga tika nospiesta, jums vienkārši jāreģistrē fakts, ka tā tika nospiesta, un jāsaglabā atribūts īpašā mainīgajā.

Mēs nosakām nospiešanas faktu, izmantojot funkciju digitalRead(). Rezultātā mēs iegūsim HIGH (1, TRUE) vai LOW (0, FALSE) atkarībā no tā, kā poga ir pievienota. Ja mēs savienojam pogu, izmantojot iekšējo uzvilkšanas rezistoru, tad, nospiežot pogu, ievade nonāks 0 līmenī (FALSE).

Lai saglabātu informāciju par pogas klikšķi, varat izmantot Būla mainīgo:

Būla taustiņš Nospiests = digitalRead(PIN_BUTTON)==LOW;

Kāpēc mēs izmantojam šo konstrukciju un nedarām to šādi:

Būla taustiņš Nospiests = digitalRead(PIN_BUTTON);

Lieta tāda, ka digitalRead() var atgriezt HIGH, bet tas nenorādīs pogas nospiešanu. Ja tiek izmantota ķēde ar pievilkšanas rezistoru, HIGH nozīmēs, ka poga, gluži pretēji, netiek nospiesta. Pirmajā opcijā (digitalRead(PIN_BUTTON)==LOW) mēs nekavējoties salīdzinājām ievadi ar mums vajadzīgo vērtību un konstatējām, ka poga ir nospiesta, lai gan signāla līmenis ieejā tagad bija zems. Un saglabāja pogas statusu mainīgajā. Mēģiniet skaidri norādīt visas loģiskās darbības, ko veicat, lai padarītu kodu caurspīdīgāku un izvairītos no nevajadzīgām stulbām kļūdām.

Kā pārslēgt darbības režīmus pēc pogas nospiešanas?

Bieži vien rodas situācija, kad mums, izmantojot pogas, jārēķinās ne tikai ar pogas nospiešanas, bet arī atlaišanas faktu. Piemēram, nospiežot un atlaižot pogu, mēs varam ieslēgt gaismu vai pārslēgt ķēdes darbības režīmu. Citiem vārdiem sakot, mums kaut kādā veidā jāieraksta kodā fakts, ka poga tika noklikšķināta, un jāizmanto informācija turpmāk, pat ja poga vairs netiek nospiesta. Apskatīsim, kā to var izdarīt.

Programmas loģika ir ļoti vienkārša:

  • Mēs atceramies faktu, ka noklikšķinām uz pakalpojuma mainīgā.
  • Gaidām, kamēr ar grabēšanu saistītās parādības pāries.
  • Mēs gaidām pogas atbrīvošanu.
  • Mēs atceramies atbrīvošanas faktu un atsevišķā mainīgajā iestatām zīmi, ka poga ir nospiesta līdz galam.
  • Notīriet pakalpojuma mainīgo.

Kā noteikt vairākas pogas nospiešanas?

Jums vienkārši jāatceras katras pogas stāvoklis attiecīgajā mainīgajā vai Arduino masīvā. Šeit galvenais ir saprast, ka katra jauna poga ir aizņemta tapa. Tāpēc, ja jums ir liels skaits pogu, var rasties bezmaksas kontaktu trūkums. Alternatīva iespēja ir izmantot pogas, kas savienotas ar vienu analogo tapu, izmantojot ķēdi ar pretestības dalītāju. Par to mēs runāsim nākamajos rakstos.

Šajā piemērā mēs aplūkosim pogas savienošanu ar Arduino kontrolieri. Nospiežot pogu, mēs iedegsim iebūvēto LED. Lielākajai daļai Arduino plākšņu ir iebūvēta SMT LED, kas savienota ar izeju 13 (13. tapu).

Nepieciešamās sastāvdaļas

  • Arduino kontrolieris
  • takta poga
  • 10 kOhm rezistors
  • prototipēšanas dēlis
  • savienojošie vadi

Savienojums

Mēs pievienojam maizes platei attiecīgi ar sarkanu un melnu vadu strāvas izvadi (5V) un zemējumu (Gnd). Parasti maizes dēļi barošanai un zemei ​​izmanto galējās tapu rindas, kā parādīts attēlā. Ar trešo zilo vadu mēs savienojam Arduino kontrollera digitālo tapu 2 ar pulksteņa pogas tapu. Tam pašam kontaktam vai ar to pastāvīgi savienotam kontaktam 4 kontaktu konstrukcijā mēs pievienojam 10 kOhm pievilkšanas rezistoru, kas savukārt ir savienots ar zemi. Otru pogas izeju pievienojam 5 V barošanas avotam.

Kad pulksteņa poga nav nospiesta, izeja 2 ir savienota tikai ar zemi, izmantojot vilkšanas rezistoru, un šī ieeja rādīs LOW. Un, nospiežot pogu, starp 2. ieeju un 5V barošanas avotu parādās kontakts, un tas tiks nolasīts.

Piezīme. Visbiežāk taktspogām katrā pusē ir divi kontakti, kā parādīts savienojuma attēlā. Tajā pašā laikā pogai ir gandrīz kvadrātveida forma. SVARĪGI ir nesajaukt, pieslēdzot, kuri kontakti ir pievienoti un kuri tiek aizvērti, nospiežot. Ja neesat pārliecināts, vislabāk ir nospiest pogu.

Jūs varat arī savienot pogu apgrieztā veidā - caur pievilkšanas rezistoru pie barošanas avota un caur pogu ar zemi. Pēc tam no ieejas tiks nolasīts HIGH un nospiežot pogu LOW.

Ja ieeja nav pievienota, ieeja nejauši nolasīs HIGH vai LOW. Tāpēc mēs izmantojam uzvilkšanas rezistoru, lai iestatītu noteiktu vērtību, kad poga netiek nospiesta.

Shēma

Kods

/* Poga Ieslēdziet un izslēdziet LED, nospiežot pogu. 2005. gadā izveidoja DojoDave


modificēja 2010. gada 28. oktobrī Tom Igoe Šis parauga kods ir publiski pieejams.

*/ // iestatīt konstantes const int buttonPin = 2; // pogai pievienotais ievades numurs const int ledPin = 13; // LED izejas numurs // mainīgie int buttonState = 0; // mainīgais, lai saglabātu pogas stāvokli void setup() ( // inicializēt tapu, kas savienota ar LED kā izvades pinMode(ledPin, OUTPUT); // inicializēt tapu, kas savienota ar pogu kā ievades pinMode(buttonPin, INPUT) void loop())( // nolasa vērtības no pogas ievades pogasState = digitalRead(buttonPin); // pārbaudiet, vai poga ir nospiesta // ja tiek nospiesta, tad buttonState būs HIGH: if (buttonState) == HIGH) ( // ieslēdziet LED digitalWrite(ledPin, HIGH); ) else ( // izslēdziet LED digitalWrite(ledPin, LOW); ) )

Skatīt arī

Izstrādājot ierīces, bieži ir jāizmanto poga, kas savienota ar Arduino plati. Tact pogas parasti tiek izmantotas kā poga, kas nospiežot aizver ķēdi un neļauj plūst strāvai, kad tās netiek nospiestas. Bet nepietiek vienkārši pievienot pogu mikrokontrollera digitālajai ieejai. Rakstā parādītas savienojuma nianses un sniegti piemēri.

Sekciju poga. Var redzēt, ka attālākie kontakti ir fiziski savienoti ar vienu spaili, kas iziet no abām pusēm. Centrālā izeja ir sakārtota līdzīgi.

Ir svarīgi nesajaukt, kuri kontakti ir savienoti (tas ir, tie ir viens vesels), un kuriem ir jāaizveras, nospiežot. Poga ir savienota ar vienu no kontaktiem ar jebkuru Arduino digitālo tapu, bet otrs kontakts ir savienots ar pozitīvo strāvas stabu. Pēc tam jums ir jākonfigurē Arduino tapa kā ievade, izmantojot funkciju pinMode (), un jūs varat nolasīt kontakta vērtību, izmantojot funkciju digitalRead (). Nospiežot pogu, no tapas tiks nolasīta vērtība HIGH. Šeit mēs būtu varējuši pabeigt, ja ne viena lieta: atvērtā stāvoklī LOW un HIGH signāli tiks nejauši nosūtīti uz ieeju, jo šāda izeja nav savienota ar neko un "karājas gaisā". Lai izveidotu pareizu savienojumu, jums ir “jāvelk” tapa, pie kuras ir pievienota poga, uz kādu no vērtībām. Mūsu gadījumā, kad poga nav nospiesta, no tapas jānolasa vērtība LOW, tāpēc mēs to vilksim zemē.

Lai to izdarītu, tas ir jāpievieno paralēli pogai ar izvēlēto termināli ar lielu nominālo vērtību (10 KOhm vai vairāk), caur kuru plūst ļoti maza strāva. Tad, kad poga netiek nospiesta, tapai būs skaidra LOW vērtība, un, nospiežot pogu, mūsu uzvilkšanas rezistors netraucēs nolasīt HIGH. Tā kā caur pievilkšanas rezistoru plūdīs ļoti maz strāvas, salīdzinot ar kontroliera tapas īssavienojuma strāvu uz pozitīvo barošanas polu.

Pēc ķēdes montāžas dēlī ielādējiet šādu programmu:

/* Pārslēdziet LED, nospiežot pogu Ierīces diagramma: * LED ir savienots ar kontaktu 13 (iebūvēts LED) * Pulksteņa poga ir savienota ar 2. kontaktu * 10 kOhm rezistors tiek izmantots, lai izvilktu 2. kontaktu uz zemējums */ // Iestatīt konstantes // iestatīt kontaktu numurus: const int buttonPin = 2 // Kontakta numurs, kuram ir pievienota poga const int ledPin = 13; // Tapas numurs, kuram pievienots LED //Deklarēt mainīgos int buttonState = 0; // Mainīgais pogas statusa saglabāšanai void setup() ( // Iestatiet tapu, pie kuras ir pievienota gaismas diode, kā izejas pinMode(ledPin, OUTPUT); // Iestatiet tapu, pie kuras ir pievienota poga, kā an input pinMode(buttonPin, INPUT ) void loop())( // Nolasīt pogas statusuState = digitalRead(buttonPin); // Pārbaudiet, vai poga ir nospiesta // Ja tiek nospiesta, tapa ar pogu saņemt vērtību HIGH if (buttonState == HIGH) ( // Ieslēdziet digitalWrite LED (ledPin, HIGH); ) else ( // Izslēdziet LED digitalWrite(ledPin, LOW); ) )

Gaismas diodes pārslēgšana, nospiežot pogu

Ierīces diagramma:

* LED savienots ar kontaktu 13 (iebūvēta LED)

* Taktpoga ir savienota ar 2. tapu

* 10 kOhm rezistors tiek izmantots, lai pievilktu 2. tapu uz zemi

//Iestatiet konstantes

// iestatīt PIN numurus:

const int buttonPin = 2 ; // Tapas numurs, kuram ir pievienota poga

const int ledPin = 13 ; // Pin numurs, kuram ir pievienota gaismas diode

//Deklarēt mainīgos

int buttonState = 0; // Mainīgais, lai saglabātu pogas statusu

anulēt iestatīšanu() (

// Konfigurējiet tapu, kurai gaismas diode ir pievienota kā izvadi

pinMode(ledPin, OUTPUT);

// Iestatiet tapu, kurai poga ir pievienota kā ieeja

pinMode(pogaPin, INPUT);

void loop() (

// Nolasīt pogas stāvokli

pogasState = digitalRead(buttonPin);

Norādījumi

Pogas ir dažādas, taču tās visas pilda vienu un to pašu funkciju – tās fiziski savieno (vai tieši otrādi, salauž) vadītājus, lai nodrošinātu elektrisko kontaktu. Vienkāršākajā gadījumā tas ir divu vadītāju savienojums, ir pogas, kas savieno lielāku skaitu vadītāju.
Dažas pogas pēc nospiešanas atstāj pieslēgtus vadītājus (bloķēšanas pogas), savukārt citas atver ķēdi uzreiz pēc atlaišanas (nebloķējošās pogas).
Pogas tiek sadalītas arī parasti atvērtās un parasti aizvērtās. Pirmie, nospiežot, aizver ķēdi, otrie atver ķēdi.
Mūsdienās plaši tiek izmantots tāds pogu veids, ko sauc par “takta pogām”. Pulkstenis - nevis no vārda "takts", bet drīzāk no vārda "taustīts", jo Spiediens labi jūtams ar pirkstiem. Tās ir pogas, kuras, nospiežot, aizver elektrisko ķēdi, un, atlaižot, tās atver.

Poga ir ļoti vienkāršs un noderīgs izgudrojums, kas kalpo labākai mijiedarbībai starp cilvēku un tehnoloģijām. Bet, tāpat kā viss dabā, tas nav ideāls. Tas izpaužas tajā, ka, nospiežot pogu un atlaižot to, veidojas t.s. " " ("atlēciens" in -). Šis ir pogas stāvokļa pārslēgšanās atkārtoti īsā laika periodā (apmēram dažas milisekundes), pirms tā iegūst līdzsvara stāvokli. Šī nevēlamā parādība rodas, kad poga tiek pārslēgta pogas materiālu elastības vai radīto elektrisko mikrodzirksteļu dēļ.
Jūs to varat redzēt savām acīm, izmantojot Arduino, ko mēs darīsim nedaudz vēlāk.

Lai pieslēgtu parasti atvērtu pulksteņa pogu Arduino, to var izdarīt visvienkāršākajā veidā: pievienojiet vienu pogas brīvo vadītāju strāvai vai zemei, otru - Arduino digitālajai izejai. Bet, vispārīgi runājot, tas ir nepareizi. Fakts ir tāds, ka brīžos, kad poga nav aizvērta, Arduino digitālajā izvadē parādīsies elektromagnētiskie traucējumi, un tādēļ ir iespējami viltus pozitīvi rezultāti.
Lai izvairītos no traucējumiem, digitālā tapa parasti ir savienota ar diezgan lielu rezistoru (10 kOhm) vai nu ar zemi, vai ar strāvu. Pirmajā gadījumā to sauc par “ar pievilkšanas rezistoru”, otrajā - par “shēmu ar nolaižamo rezistoru”. Apskatīsim katru no tiem.

Vispirms savienosim pogu ar Arduino, izmantojot ķēdi ar pievilkšanas rezistoru. Lai to izdarītu, vienu pogas kontaktu pievienojiet zemējumam, otru - digitālajai izejai 2. Arī digitālā izeja 2 ir pievienota caur 10 kOhm rezistoru +5 V barošanai.

Uzrakstīsim šādu skici, lai apstrādātu pogu nospiešanu un augšupielādētu to Arduino.
Tagad 13. tapas iebūvētā gaismas diode deg pastāvīgi, līdz tiek nospiesta poga. Nospiežot pogu, tas pāriet uz LOW stāvokli un LED nodziest.

Tagad saliksim ķēdi ar nolaižamo rezistoru. Vienu pogas kontaktu pievienojam +5 V barošanas avotam, otru digitālajai izejai 2. Digitālo izeju 2 caur 10 kOhm rezistoru pievienojam zemei.
Mēs nemainīsim skici.

Tagad gaismas diode neiedegas, kamēr nav nospiesta poga.

Video par tēmu

2. padoms: kā atbrīvoties no kontaktu atlēciena, pievienojot pogu Arduino

Mēs jau esam apskatījuši pogas savienošanu ar Arduino un pieskārāmies jautājumam par kontakta “atlēcienu”. Šī ir ļoti nepatīkama parādība, kas izraisa atkārtotu pogu nospiešanu un apgrūtina pogu nospiešanas programmatūras apstrādi. Parunāsim par to, kā atbrīvoties no kontaktu atlēciena.

Jums būs nepieciešams

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

Norādījumi

Kontaktu atlēciens ir parādība, kas raksturīga mehāniskiem slēdžiem, pogām, pārslēgšanas slēdžiem un relejiem. Sakarā ar to, ka kontakti parasti ir izgatavoti no metāliem un sakausējumiem, kuriem ir elastība, fiziski aizvērti tie nekavējoties neizveido uzticamu savienojumu. Īsā laika posmā kontakti vairākas reizes aizveras un atgrūž viens otru. Rezultātā elektriskā strāva iegūst vienmērīgu vērtību nevis uzreiz, bet pēc virknes kāpumu un kritumu. Šīs pārejošās iedarbības ilgums ir atkarīgs no kontaktu materiāla, to izmēra un konstrukcijas. Ilustrācijā parādīta tipiska viļņu forma, kad taustes pogas kontakti ir aizvērti. Redzams, ka laiks no pārslēgšanās brīža uz līdzsvara stāvokli ir vairākas milisekundes. Tas arī ir "atlēkšana".

Šis efekts nav pamanāms elektriskā apgaismojuma vadības ierīcēs vai citos inerciālajos sensoros un ierīcēs. Bet ķēdēs, kur notiek ātra informācijas lasīšana un apstrāde (kur frekvences ir tādā pašā secībā kā “atlēciena” impulsiem vai augstākas), tā ir problēma. Konkrēti, Arduino UNO, kas darbojas ar 16 MHz, lieliski spēj atlēkt uz ķegļiem, pieņemot vieninieku un nulles secību, nevis vienu slēdzi no 0 uz 1.

Apskatīsim, kā kontaktu atlēciens ietekmē pareizu ķēdes darbību. Savienosim pulksteņa pogu ar Arduino, izmantojot ķēdi ar nolaižamo rezistoru. Kad poga ir nospiesta, mēs iedegsim LED un atstājam to ieslēgtu, līdz poga tiek nospiesta vēlreiz. Skaidrības labad pievienosim ārējo gaismas diodei ar digitālo kontaktu 13, lai gan jūs varat iztikt ar iebūvētu.

Lai īstenotu šo uzdevumu, pirmā lieta, kas nāk prātā, ir:
- atcerieties pogas iepriekšējo stāvokli;
- salīdzināt ar pašreizējo stāvokli;
- ja stāvoklis ir mainījies, tad mainiet LED stāvokli.
Uzrakstīsim šādu skici un ielādējam Arduino atmiņā.
Kad ķēde tiek nodota ekspluatācijā, kontakta atsitiena efekts ir redzams uzreiz. Tas izpaužas ar to, ka gaismas diode neiedegas uzreiz pēc pogas nospiešanas vai iedegas un uzreiz nodziest, vai neizslēdzas uzreiz pēc pogas nospiešanas, bet turpina degt. Kopumā shēma nedarbojas stabili. Un, ja LED ieslēgšanas uzdevumam tas nav tik kritisks, tad citiem, nopietnākiem uzdevumiem, tas ir vienkārši nepieņemami.

Mēs centīsimies labot situāciju. Mēs zinām, ka kontaktu atlēciens notiek dažu milisekunžu laikā pēc kontaktu aizvēršanas. Pagaidīsim, teiksim, 5 ms pēc pogas stāvokļa maiņas. Šis laiks cilvēkam ir praktiski mirklis, un cilvēka pogas nospiešana parasti aizņem daudz ilgāku laiku – vairākus desmitus milisekundes. Un Arduino lieliski darbojas tik īsos laika periodos, un šīs 5 ms ļaus tam pārtraukt kontakta atlēcienu, nospiežot pogu.
Šajā skicē mēs paziņosim procedūru debounce() ("bounce" angļu valodā ir tikai "bounce", prefikss "de" nozīmē apgriezto procesu), kuras ievadei 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.
Pēc preses noteikšanas mēs mainām gaismas diodes stāvokli.
Augšupielādēsim skici Arduino dēlī. Tagad viss ir daudz labāk! Poga darbojas bez kļūmēm, nospiežot LED maina stāvokli, kā mēs vēlējāmies.

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ācija;
tukšais intervāls (ms)- iestata aizkaves laiku milisekundēs;
anulēts pielikums (PIN numurs)- iestata tapu, pie kuras ir pievienota poga;
int update()- atjaunina objektu un atgriež true, ja tapas stāvoklis ir mainījies, un false citādi;
int lasīt ()- nolasa jauno tapas 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 nospiešanas reizes, un katra nepāra nospiešana ieslēgs LED, un katra pāra nospiešana to izslēgs. Šī skice izskatās kodolīga, viegli lasāma un viegli pielietojama.

Avoti:

  • Arduino savienotās pogas kontaktu atslēgšana
  • Bounce2 bibliotēka