Tact-painikkeen yhdistäminen. Painikkeen yhdistäminen Arduinoon. Painikkeen ja LEDin yhdistäminen Arduinoon

Painike on hyvin tunnettu mekaaninen laite, joka voi sulkea ja avata sähköpiirin halutessaan. On olemassa monenlaisia ​​painikkeita, jotka toimivat eri sääntöjen mukaan. Esimerkiksi tässä opetusohjelmassa käytetty painike suorittaa piirin vain niin kauan kuin sormi painaa sitä. Avauspainike sen sijaan katkaisee piirin painettaessa.

On painikkeita, joissa on ryhmä koskettimia, joista osa katkaisee piirin painettaessa, kun taas toiset sulkeutuvat tällä hetkellä. Pieniä versioita näistä painikkeista kutsutaan usein mikrokytkimiksi.

Tact-painikkeet löytyvät lähes kaikista elektronisista laitteista: tietokoneen näppäimistöstä, puhelimesta, television kaukosäätimestä jne.

On lukituspainikkeita, jotka toimivat kuin kuulakärkikynän painike: kerran painettuna - piiri sulkeutuu, toisen kerran - se katkeaa. Alla oleva kuva on vain yksi näistä. Lukituspainikkeita on kätevä käyttää laitteen toimintatilan vaihtamiseen. Voit esimerkiksi vaihtaa virtalähdettä: akkua tai virtalähdettä.

Tai toinen vaihtoehto - suuret painikkeet laitteiden hätäpysäykseen. Ne on maalattu kirkkailla väreillä herättämään ihmisten huomion. Pohjimmiltaan ne ovat tavallisia avauspainikkeita tai nappeja, joissa on lukitus.

Nämä ovat vain osa vaihtoehdoista. Painikkeiden lisäksi sähkömaailmassa on muitakin mekanismeja, kuten vipukytkimet ja kytkimet. Kaikki ne on suunniteltu ohjaamaan mekaanisesti virtaa piirissä.

Painikkeen yhdistäminen

Joten työskentelemme yksinkertaisimmalla tahdikkuudella, johon yritämme muodostaa yhteyden Arduino Uno. Tyypillisesti juotettamattomien leipälevyjen kanssa työskenneltäessä käytetään juotosnastalla varustettua painiketta. Oppitunnin alussa olevasta valokuvasta näet, että tällaisessa painikkeessa on neljä hieman taivutettua nastaa. Painikkeita on kahdella suoralla ulostulolla, ne sopivat myös toimintaamme.

Sähkökaavioissa painike on kuvattu seuraavasti:

Jos katsot nelitahtisen painikkeen sisään, näet tämän kaavion:

Pääsääntöisesti kosketuspainikkeen tapit sijoitetaan kotelon vastakkaisille puolille pareittain. Eli voimme käyttää joko kosketinparia toisella puolella tai paria toisella.

Ja tältä näyttää kaksinastaisen painikkeen kaavio.

Tätä painiketta on vaikea sekoittaa: kaksi kosketinta, jotka muodostavat yhteyden, kun painat painiketta.

Leipälaudalla kummankin tyyppiset tahdikkuuden painikkeet sijoitetaan yleensä seuraavasti:

Yritetään nyt koota yksinkertaisin piiri juotettomaan leipälevyyn, joka näyttää painikkeen toiminnan. Sytytämme LEDin.

Tuloksena oleva piiri suorittaa yksinkertaisen toiminnon: paina painiketta - LED syttyy, vapauta se - se sammuu.

Yhteys kohteeseen Arduino Uno

Nyt kun Tact-painikkeen toiminta on erittäin selkeä, kootaanpa piiri painikkeella ja LEDillä ja yhdistetään ne ohjaimeen. Asetetaan itsellemme yksinkertainen tehtävä: anna Arduino Uno -LEDin vilkkua kolme kertaa, kun painat Arduino Uno -painiketta kerran.

Kaaviokuva


Asettelun ulkonäkö


Tässä kaaviossa näemme jo tutun piirin for. Näemme myös painikkeen, joka on kytketty Arduino-nastaan ​​nro 3. Tässä voi aivan aiheellisesti herätä kysymys: miksi liitimme painikkeen myös maahan, 10 kOhm vastuksen kautta? Tämän ongelman ratkaisemiseksi kuvitellaan, että liitimme painikkeen "naiivilla" piirillä ilman lisävastuksia.

Tässä nastan nro 3 ja maan välissä on pieni kondensaattori, joka voi kerätä varauksen. Monissa mikro-ohjaimissa on tämä ominaisuus.

Kuvittele nyt, että suljemme painikkeen. Virta alkaa kulkea +5V, suoraan koskettimeen nro 3, samalla lataaen kapasiteettia. Arduino rekisteröi painikkeen painalluksen onnistuneesti. Mutta kun olemme poistaneet sormemme kellopainikkeesta, vastoin odotuksiamme, mikro-ohjain katsoo edelleen, että painiketta painetaan! Tietenkin, koska ladattu kondensaattori vapauttaa vähitellen kertyneen varauksen jalkaan nro 3. Tämä jatkuu, kunnes kapasitanssi puretaan loogisen tason alapuolelle.

ROC-kellopainikemoduulin yhdistäminen Arduinoon

Me RobotClassilla olemme erityisesti projektejasi varten tehneet moduulin kahdesta kosketuspainikkeesta. Moduulissa on valmiiksi tarvittavat vastukset ja jopa kaksi LEDiä osoittamaan näppäinpainalluksia.


Selvitetään kuinka yhdistää tämä moduuli Arduino Unoon.

Kaaviokuva


Asettelun ulkonäkö


Kuten näette, riippumatta siitä, mitä painikkeita käytämme, kytkentäkaavio ei muutu paljon. Myöskään heidän kanssaan työskentelyohjelma ei muutu.

Ohjelma painikkeella työskentelemiseen Arduinossa

Lopuksi olemme selvittäneet suunnitelmamme vivahteet ja olemme valmiita kirjoittamaan ohjelman. Ohjelmiston opetusohjelmassa opimme nastojen asettamisen toiminnoista pinMode ja digitaalinen lähtötoiminto digitalWrite. Tällä kertaa tarvitsemme vielä yhden tärkeän toiminnon, joka antaa tietoja mikro-ohjaimelle:

DigitalRead(yhteysnumero);

Tämä funktio palauttaa Boolen arvon, jonka Arduino luki tietystä nastasta. Tämä tarkoittaa, että jos koskettimeen syötetään +5V, toiminto palautuu totuus*. Jos kosketin on kytketty maahan, saamme arvon valehdella. C++:ssa tosi ja epätosi vastaavat numeroita 1 ja 0, vastaavasti.

Jotta haluamamme yhteyshenkilö toimisi tiedonsyöttötilassa, meidän on asetettava se tiettyyn tilaan:

PinMode(pin_numero, INPUT);

Lopuksi laitetaan kaikki yhteen ja kirjoitetaan ohjelma.

Const int led = 2;
const int -painike = 3;
int val = 0;

void setup())(
pinMode(led, OUTPUT);
pinMode(painike, INPUT);
}

void loop()
val = digitaalinenLue(painike);
jos(arvo == KORKEA)(
// silmukka 0:sta 2:een 1:n askelin
for(int i=0; i<3; i++){
digitalWrite(led, HIGH);
viive (500);
digitalWrite(led, LOW);
viive (500);
}
}
}

Lataamme ohjelman Arduino Unoon ja tarkistamme ohjelman toiminnan. Jos kaikki on tehty oikein, sen pitäisi näyttää kuvassa:

OK, nyt kaikki on ohi. Nyt voimme ohjata laitteitamme painikkeilla. Jos olet jo suorittanut oppitunnin, niin voimme tehdä kellon herätyskellolla!

Trigger-painikeohjelma

Toinen huomionarvoinen esimerkki on laukaisupainike. Se toimii näin: paina painiketta kerran - LED syttyy, paina sitä toisen kerran - se sammuu.

Tämän painikkeen toiminnan toteuttamiseksi tarvitsemme lisämuuttujan, jota usein kutsutaan "tilamuuttujaksi" tai "lipuksi".

Const int led = 2;
const int -painike = 3;
int val = 0;
tavun tila = 0; // tilamuuttuja
void setup())(
pinMode(led, OUTPUT);
pinMode(painike, INPUT);
}
void loop()
// kirjoittaa painikkeen tila muuttujaan val
val = digitaalinenLue(painike);
// jos painikkeen tila on tosi, suorita toiminto
jos(arvo == KORKEA)(
// muuttaa tila päinvastaiseksi
tila = !tila;
jos(tila == KORKEA)(
// jos nykyinen tila on tosi, sytytä LED
digitalWrite(led, HIGH);
) muu (
// jos nykyinen tila on epätosi, sammuta LED
digitalWrite(led, LOW);
}
viive (300);
}
}

Lataamme ohjelman Arduinoon ja tarkistamme piirin toiminnan. Paina painiketta nopeasti ja LED syttyy. Paina uudelleen ja se sammuu. Mutta jos painat painiketta etkä vapauta sitä, LED alkaa vilkkua 600 ms:n ajan! Miksi niin? Yritä selvittää se.

Tehtävät

Käytännössä yritetään ratkaista muutama yksinkertainen ongelma painikkeella ja LEDillä.

  • Piiri sisältää kaksi painiketta ja yhden LEDin. Anna LEDin syttyä, kun painat ensimmäistä painiketta, ja sammua, kun painat toista painiketta.
  • Piano. Piiri sisältää seitsemän painiketta ja yhden kaiuttimen. Kun painat kutakin seitsemästä painikkeesta, kaiuttimen pitäisi toistaa vastaava nuotti. Tulee opiskella.
  • Peli "Cowboys". Piiri sisältää kaksi painiketta, yhden summerin ja kaksi LEDiä. Kun ohjelma käynnistyy, summerin pitäisi antaa lyhyt ääni. Välittömästi tämän jälkeen jokaisen pelaajan on painettava painikettaan mahdollisimman nopeasti. Pelaajalla, joka tekee tämän ensin, on LED-valo. Sinun on opittava keskeytyksiä koskeva oppitunti.

Painikeanturin liittäminen Arduinoon vaatii tiettyjä tietoja ja taitoja. Tässä artikkelissa puhumme siitä, mikä tahdikaspainike on, mitä painikkeen pomppiminen on, kuinka painike liitetään oikein ylös- ja alasvetovastuksen kanssa, kuinka voit ohjata LEDejä ja muita laitteita painikkeella.

Painike (tai painikekytkin) on yksinkertaisin ja helpoin kaikista antureista. Napsauttamalla sitä lähetät signaalin ohjaimelle, joka sitten johtaa joihinkin toimiin: LEDit syttyvät, kuuluu ääniä, moottorit käynnistyvät. Elämässämme törmäämme usein erilaisiin kytkimiin ja tunnemme tämän laitteen hyvin.

Tact-painikkeet ja kytkinpainikkeet

Kuten tavallista, aloitamme osion yksinkertaisilla asioilla, jotka kiinnostavat vain aloittelijoita. Jos tiedät perusasiat ja haluat oppia eri vaihtoehdoista painikkeen liittämiseksi Arduinoon, voit ohittaa tämän kappaleen.

Mikä on painike? Pohjimmiltaan tämä on melko yksinkertainen laite, joka sulkee ja avaa sähköverkon. Voit suorittaa tämän sulkemisen/avaamisen eri tiloissa, samalla kun kiinnität tai et kiinnitä sijaintiasi. Vastaavasti kaikki painikkeet voidaan jakaa kahteen suureen ryhmään:

  • Kiinnityspainikkeet. He palaavat alkuperäiseen tilaansa vapautumisen jälkeen. Kun ne jaetaan alkutilasta riippuen normaalisti suljettuihin ja normaalisti auki oleviin painikkeisiin.
  • hetkelliset painikkeet (taktipainikkeet). Ne kiinnitetään ja pysyvät asentoon, johon ne jätettiin.

Eri painikkeille on paljon vaihtoehtoja, tämä on todellakin yksi yleisimmistä elektroniikkakomponenteista.






Arduino-painikkeet yksinkertaisiin projekteihin

Projekteissamme työskentelemme hyvin yksinkertaisten 4-jalkaisten kellopainikkeiden kanssa, jotka tulevat melkein minkä tahansa Arduino-sarjan mukana. Painike on kytkin, jossa on kaksi kosketinparia. Yhden parin koskettimet on kytketty toisiinsa, joten piiriin ei voi toteuttaa useampaa kuin yhtä kytkintä, mutta voit ohjata samanaikaisesti kahta rinnakkaista segmenttiä, tämä voi olla hyödyllistä.

Tilanteesta riippuen voit luoda sekä normaalisti suljetuilla että normaalisti avoimilla koskettimilla olevia piirejä - sinun tarvitsee vain tehdä kytkennät piiriin vastaavasti.

Käytön helpottamiseksi tahdikkuuden painikkeen mukana tulee yleensä jonkin värinen muovikorkki, joka sopii painikkeen päälle selvästi ja antaa projektille vähemmän hakkerimaisen ilmeen.

Arduino-painikkeen yhdistäminen

LEDin kytkeminen päälle ja pois päältä painikkeella

Aloitetaan yksinkertaisimmasta tavasta yhdistää hienotunteinen painike. Harkitse piiriä, jossa on Arduino virtalähteenä, LED, 220 ohmin rajoitusvastus ja painike, joka sulkee ja avaa piirin.

Kun kytket painiketta kahdella jalkaparilla, on tärkeää valita oikeat NC-koskettimet. Katso kuvaa huolellisesti: painikkeen sivuilla on jalkaparit. Itse painike on neliömäinen, mutta kosketinparien väliset etäisyydet ovat visuaalisesti havaittavissa: voit valita heti kaksi toiselta puolelta ja kaksi toiselta puolelta. Joten kytkin toteutetaan yhden "parin" välissä. Piiriin sisällyttämiseksi yhdistämme yhteen ja toiseen koskettimeen, joiden välillä on vähimmäisetäisyys. Toinen kosketinpari yksinkertaisesti kopioi ensimmäisen.

Jos sinulla on erityyppinen kytkin, voit turvallisesti valita koskettimet vastakkaisista kulmista (joissakin painikkeissa on erityinen merkki syvennyksen muodossa, jonka avulla voit määrittää, millä puolella paritetut koskettimet sijaitsevat). Luotettavin tapa määrittää oikeat jalat on soittaa koskettimet testerillä.

Itse piiri painikkeella, LEDillä ja Arduino-ohjaimella ei vaadi erityisiä selityksiä. Painike katkaisee piirin, LED ei syty. Kun painetaan, piiri sulkeutuu ja LED syttyy. Jos sekoitat koskettimet (käännä painikkeet päälle suljettujen parillisten koskettimien kautta), painike ei toimi, koska piiri ei koskaan avaudu. Vaihda vain yhteystiedot.

Painikkeen yhdistäminen vetovastuksella

Yhdistetään nyt painike Arduinoon, jotta voimme lukea sen tilan luonnoksesta. Tätä varten käytämme seuraavaa järjestelmää.

Piirryksessä tarkkailemme painamisen tosiasiaa ja näytämme viestin porttimonitorissa. Annamme mielenkiintoisemman esimerkin ja yksityiskohtaisen selityksen itse piiristä hieman myöhemmin.

Yksi asia, johon on kiinnitettävä huomiota, on 10K vastus, jonka lisäsimme tähän piiriin. Puhumme lisää sen tarkoituksesta myöhemmin, muista vain, että tällainen vastus on välttämätön, jotta piiri toimisi kunnolla.

Luonnos Arduino-painikkeelle, jossa on vetovastus:

/* Esimerkki kellopainikkeen käytöstä Arduinossa. Painike on kytketty nastaan ​​2. */ const int PIN_BUTTON = 2; void setup() ( Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() ( // Hae painikkeen tila ja näytä se porttimonitorissa int buttonState = digitalRead(PIN_BUTTON); Serial.println( buttonState viive(50);

Yhdistetään painiketta INPUT_PULLUP-tilassa

Yllä olevassa piirissä olemme käyttäneet vastusta nimeltä pull-up pakottamaan tietyn signaalitason digitaaliporttiin. Mutta on toinenkin tapa liittää painike ilman vastusta käyttämällä Arduino-levyn sisäistä vastusta. Asennuslohkossa meidän on vain määritettävä nastatyyppi, johon liitämme painikkeen, kuten INPUT_PULLUP.

PinMode(PIN_PAINIKE, INPUT_PULLUP);

Vaihtoehtona olisi valita pin-moodiksi OUTPUT ja asettaa signaalin taso korkeaksi tässä portissa. Sisäänrakennettu vetovastus kytkeytyy automaattisesti.

PinMode(PIN_PAINIKE, INPUT_PULLUP); digitalWrite(PIN_PAINIKE, KORKEA);

Siinä kaikki. Voit koota niin monimutkaisen piirin ja työskennellä luonnoksen painikkeella.

Vilkkuva LED painikkeen painamisen jälkeen

Edellisessä LED-esimerkissä liitimme painikkeen Arduino-levyyn ja ymmärsimme, kuinka se toimii. LED syttyi ja sammui, mutta teki sen täysin passiivisessa tilassa - itse ohjain oli tässä aivan tarpeeton, se olisi voitu korvata paristoilla. Tehdään siis uudesta projektistamme "älykkäämpi": kun painat painiketta, saamme LEDin vilkkumaan jatkuvasti. Et voi tehdä tätä perinteisellä hehkulampulla ja kytkimellä varustetulla piirillä - käytämme mikro-ohjaimemme tehoa ratkaistaksemme tämän, vaikkakin yksinkertaisen, mutta ei triviaalin tehtävän.

Projektin täydellinen kaavio näkyy kuvassa:

Piirin fragmentti LEDillä on meille jo tuttu. Kokosimme tavallisen majakan, jossa oli LED ja rajoitusvastus. Mutta toisessa osassa näemme tutun painikkeen ja toisen vastuksen. Vaikka emme mene yksityiskohtiin, kokoamme vain piirin ja lataamme yksinkertaisen luonnoksen Arduinoon. Kaikki piirin elementit toimitetaan yksinkertaisimmissa Arduino-aloitussarjoissa.

/* Piirrä piirros kosketuspainikkeella ja LEDillä. LED vilkkuu, kun painiketta painetaan. Painike vedetään maahan, sen painaminen vastaa HIGH-arvoa tulossa */ const int PIN_BUTTON = 2; const int PIN_LED = 13; void setup() ( Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() ( // Hanki painikkeen tila int buttonState = digitalRead(PIN_BUTTON); Serial.println(buttonState); // Jos painiketta ei painetaan, niin emme tee mitään if (!buttonState) ( viive(50); return; ) // Tämä koodilohko suoritetaan, jos painiketta painetaan // LED vilkkuu digitalWrite(PIN_LED, HIGH delay( 1000 , LOW (1000);

Paina ja pidä painettuna - LED vilkkuu. Päästä irti - se sammuu. Juuri sitä mitä halusimme. Taputamme käsiämme ilosta ja alamme analysoida, mitä olemme tehneet.

Katsotaanpa luonnos. Näemme siinä melko yksinkertaisen logiikan.

  1. Selvitä, onko painiketta painettu.
  2. Jos painiketta ei paineta, poistumme silmukkamenetelmästä kytkemättä päälle tai muuttamatta mitään.
  3. Jos painiketta painetaan, vilkumme käyttämällä normaalin luonnoksen fragmenttia:
    1. Kytke LED päälle kytkemällä jännite haluttuun porttiin
    2. Pidämme tarvittavan tauon, kun LED palaa
    3. Sammuta LED
    4. Pidämme tarvittavan tauon LEDin ollessa sammutettuna

Luonnoksen painikkeen toiminnan takana oleva logiikka voi riippua vetovastuksen liitäntätavasta. Puhumme tästä seuraavassa artikkelissa.

Arduinon painike kolina

Painikkeiden kanssa työskennellessämme saatamme kohdata erittäin epämiellyttävän ilmiön, jota kutsutaan painikkeiden pomppimiseksi. Kuten nimestä voi päätellä, tämä ilmiö johtuu painikekytkimen sisällä olevien koskettimien tärinästä. Metallilevyt eivät kosketa toisiaan välittömästi (tosin silmillemme hyvin nopeasti), joten kosketusalueella esiintyy lyhytaikaisia ​​jännitepiikkejä ja laskuja. Jos emme ennakoi tällaisten "roskasignaalien" ilmestymistä, reagoimme niihin joka kerta ja voimme viedä projektimme taloon.

Pomppimisen poistamiseksi käytetään ohjelmisto- ja laitteistoratkaisuja. Lyhyesti sanottuna mainitsemme vain tärkeimmät puheen estomenetelmät:

  • Lisäämme luonnokseen 10-50 millisekunnin tauon Arduino-nastan arvojen keräämisen väliin.
  • Jos käytämme keskeytyksiä, ohjelmistomenetelmää ei voida käyttää ja muodostamme laitteistosuojauksen. Yksinkertaisin niistä on RC-suodatin, jossa on kondensaattori ja vastus.
  • Tarkempaa palautumista varten käytetään laitteistosuodatinta, joka käyttää Schmidt-liipaisinta. Tämän vaihtoehdon avulla voit saada lähes ihanteellisen muotoisen signaalin Arduinon tuloon.

Täältä löydät tarkempaa tietoa keskusteluista.

Tilan vaihto painikkeella

Jotta voit määrittää, onko painiketta painettu, sinun on vain kirjattava se, että sitä painettiin ja tallennettava attribuutti erityiseen muuttujaan.

Määritämme painalluksen käyttämällä digitalRead()-funktiota. Tuloksena saamme HIGH (1, TRUE) tai LOW (0, FALSE) sen mukaan, kuinka painike on kytketty. Jos liitämme painikkeen sisäisellä vetovastuksen avulla, painikkeen painaminen saa tulon tasolle 0 (FALSE).

Voit tallentaa tietoja painikkeen napsautuksesta käyttämällä loogista muuttujaa:

boolean keyPressed = digitaalinenLue(PIN_PAINIKE)==ALA;

Miksi käytämme tätä rakennetta emmekä tee sitä näin:

boolean keyPainattu = digitaalinenLue(PIN_PAINIKE);

Asia on, että digitalRead() saattaa palauttaa HIGH:n, mutta se ei osoita painikkeen napsautusta. Jos käytät piiriä, jossa on vetovastus, HIGH tarkoittaa, että painiketta ei päinvastoin paineta. Ensimmäisessä vaihtoehdossa (digitalRead(PIN_BUTTON)==LOW) vertasimme tuloa välittömästi tarvitsemaamme arvoon ja totesimme, että painiketta painettiin, vaikka signaalin taso tulossa oli nyt alhainen. Ja tallensi painikkeen tilan muuttujaksi. Yritä osoittaa selkeästi kaikki suorittamasi loogiset toiminnot tehdäksesi koodistasi läpinäkyvämmän ja välttääksesi tarpeettomia typeriä virheitä.

Kuinka vaihtaa toimintatilaa painikkeen painamisen jälkeen?

Usein syntyy tilanne, kun meidän on painikkeita käyttäessämme otettava huomioon se tosiasia, että painikkeen painamisen lisäksi myös vapautetaan. Esimerkiksi painamalla ja vapauttamalla painiketta voimme sytyttää valon tai vaihtaa piirin toimintatilaa. Toisin sanoen, meidän on jotenkin kirjattava koodiin se tosiasia, että painiketta on napsautettu ja käytettävä tietoja tulevaisuudessa, vaikka painiketta ei enää painettaisi. Katsotaan kuinka tämä voidaan tehdä.

Ohjelman logiikka on hyvin yksinkertainen:

  • Muistamme palvelumuuttujan napsautuksen.
  • Odotamme, kunnes kolisemiseen liittyvät ilmiöt ohittavat.
  • Odotamme painikkeen vapauttamista.
  • Muistamme vapauttamisen tosiasian ja asetamme erilliseen muuttujaan merkki siitä, että painike on painettu kokonaan.
  • Tyhjennä palvelumuuttuja.

Kuinka tunnistaa useat painikkeen painallukset?

Sinun tarvitsee vain muistaa kunkin painikkeen tila vastaavassa muuttujassa tai Arduino-taulukossa. Tärkeintä tässä on ymmärtää, että jokainen uusi painike on varattu nasta. Siksi, jos sinulla on paljon painikkeita, saatat kokea pulaa ilmaisista yhteystiedoista. Vaihtoehtoinen vaihtoehto on käyttää painikkeita, jotka on kytketty yhteen analogiseen nastaan ​​resistiivisellä jakajalla varustetulla piirillä. Puhumme tästä seuraavissa artikkeleissa.

Laitteita kehitettäessä joudut usein käyttämään Arduino-levyyn kytkettyä painiketta. Tact-painikkeita käytetään yleensä nappeina, jotka sulkevat piirin painettaessa eivätkä päästä virtaa läpi, kun niitä ei paineta. Mutta pelkkä painikkeen liittäminen mikro-ohjaimen digitaaliseen tuloon ei riitä. Artikkelissa esitetään yhteyden vivahteet ja annetaan esimerkkejä.

Käytämme esimerkiksi tahdikkuutta. Painikkeessa on 4 lähtöä. Mutta itse asiassa 4 nastaa tarvitaan vain painikkeen tukevaan kiinnittämiseen levylle. Sisällä sen sivuilla on vain 2 kosketinta, joista jokainen työntyy kotelon rajojen ulkopuolelle vasemmalla ja oikealla. Tämä näkyy selvästi painikkeen puretuista valokuvista:

Painike ilman yläkantta. Eri nastoihin liitetyt koskettimet on korostettu eri väreillä. Puretun painikkeen vieressä näkyy pyöreä metallinen osa, joka sulkee keski- ja sivukoskettimet painettaessa.

Poikkileikkauspainike. Voidaan nähdä, että uloimmat koskettimet on fyysisesti kytketty yhteen molemmilta puolilta ulos tulevaan liittimeen. Keskilähtö on järjestetty samalla tavalla.

On tärkeää olla sekoittamatta, mitkä koskettimet on kytketty (eli ne ovat yksi kokonaisuus) ja mitkä sulkeutuvat painettaessa. Painike on kytketty yhdellä koskettimella mihin tahansa Arduinon digitaaliseen nastaan ​​ja toinen kosketin positiiviseen virtanapaan. Seuraavaksi sinun on määritettävä Arduino-nasta tuloksi käyttämällä pinMode()-funktiota ja voit lukea arvon nastasta käyttämällä digitalRead()-funktiota. Kun painiketta painetaan, arvo HIGH luetaan nastasta. Olisimme voineet lopettaa tähän, ellei yksi asia: avoimessa tilassa LOW- ja HIGH-signaalit lähetetään satunnaisesti tuloon, koska tällainen lähtö ei ole kytketty mihinkään ja "roikkuu ilmassa". Oikeaa liitäntää varten sinun on "vedettävä" tappi, johon painike on kytketty, johonkin arvoista. Meidän tapauksessamme, kun painiketta ei paineta, arvo LOW tulisi lukea tapista, joten vedämme sen maahan.

Tätä varten sinun on kytkettävä se rinnakkain painikkeen kanssa valittuun suuren nimellisarvon (10 KOhm tai enemmän) liittimeen, jonka läpi kulkee hyvin pieni virta. Sitten kun painiketta ei paineta, nastalla on selkeä LOW-arvo, ja kun painiketta painetaan, vetovastuksemme ei häiritse lukemaa HIGH. Koska vetovastuksen läpi kulkee hyvin vähän virtaa verrattuna ohjaimen nastan oikosulkuvirtaan positiiviseen tehonapaan.

Piirin kokoamisen jälkeen lataa seuraava ohjelma kortille:

/* Vaihda LED, kun painat painiketta Laitekaavio: * LED on kytketty nastaan ​​13 (sisäänrakennettu LED) * Kellopainike on kytketty 2. nastaan ​​* 10 kOhm vastuksella vedetään 2. nasta maadoitus */ // Aseta vakiot // aseta pin numerot: const int buttonPin = 2 // Napin numero, johon painike on kytketty const int ledPin = 13; // Sen nastan numero, johon LED on kytketty //Ilmoita muuttujat int buttonState = 0; // Muuttuja painikkeen tilan tallentamiseen void setup() ( // Aseta nasta, johon LED on liitetty lähtöpinnaksiMode(ledPin, OUTPUT); // Aseta nasta, johon painike on kytketty an input pinMode(buttonPin, INPUT ) void loop())( // Lue painikkeen tila Tila = digitalRead(buttonPin); // Tarkista, onko painiketta painettu // Jos painetaan, nasta, jossa on painike, vastaanottaa arvo HIGH if (buttonState == HIGH) ( // Kytke DigitalWrite-LED päälle (ledPin, HIGH); ) else ( // Sammuta LED digitalWrite(ledPin, LOW); ) )

LEDin vaihtaminen painiketta painettaessa

Laitekaavio:

* LED kytketty napaan 13 (sisäänrakennettu LED)

* Tact-painike on kytketty 2. nastaan

* 10 kOhm vastusta käytetään 2. nastan vetämiseen maahan

//Aseta vakiot

// aseta pin-numerot:

const int buttonPin = 2 ; // Sen nastan numero, johon painike on liitetty

const int ledPin = 13 ; // Pin-numero, johon LED on kytketty

//Ilmoita muuttujat

int-painikeTila = 0; // Muuttuja painikkeen tilan tallentamiseen

void setup() (

// Määritä nasta, johon LED on kytketty ulostuloksi

pinMode(ledPin, OUTPUT);

// Aseta nasta, johon painike on kytketty tuloksi

pinMode(painikePin, INPUT);

void loop() (

// Lue painikkeen tila

painikkeen tila = digitaalinenLue(painikePin);

Kellopainikkeen kytkeminen Arduino Unon digitaalisiin ja analogisiin tuloihin oikein. Kerromme sinulle, kuinka vältät "kontaktien pomppimisen" ja katsomme kaaviota yhden tai useamman painikkeen yhdistämisestä Arduino-korttiin. Katsotaanpa toimintoja digitaalinen luku Ja analoginen Read C++-ohjelmointikielellä, jota tarvitaan usein luotaessa erilaisia ​​Arduino-projekteja aloittelijoille.

Työskentely Arduinon kellopainikkeilla

Suurin ongelma painikkeiden käytössä Arduinon ohjaamiseen on "kontaktien palautuminen". Tosiasia on, että kosketuspainikkeiden mekaaniset koskettimet eivät koskaan sulkeudu ja avaudu välittömästi. Muutaman millisekunnin sisällä koskettimet sulkeutuvat ja avautuvat useita kertoja – seurauksena mikro-ohjain ei vastaanota yhtä signaalia, vaan sarjan pulsseja.

Painikkeiden pomppimisen eliminoimiseksi Arduino-mikrokontrollerissa käytetään erilaisia ​​sähköpiirejä, joissa on liipaisimet ja kondensaattorit. Mutta on paljon kätevämpää ja yksinkertaisempaa käyttää ohjelmistomenetelmää mahdollisen tahdikkuuden painikkeen pomppimisen estämiseksi - käytä muutaman millisekunnin viivettä tai Bounce2.h-kirjastoa torjuaksesi kontaktien pomppimista Arduinolle.

Painikkeen ja LEDin yhdistäminen Arduinoon

Tätä oppituntia varten tarvitsemme seuraavat tiedot:

  • Arduino Uno / Arduino Nano / Arduino Mega aluksella;
  • leipä aluksella;
  • 1 LED;
  • vastukset 220 ohm ja 10 kOhm;
  • 1 kosketuspainike;
  • uros-uros ja uros-naaras johdot.
Kaaviokuva. Painikkeen yhdistäminen Arduino Unoon

Käytämme levyn digitaalisia portteja kellopainikkeen yhdistämiseen ja digitalRead-komentoa tietojen lukemiseen. Kokoa piiri yllä olevan kuvan mukaisesti ja lataa luonnos. Huomaa, että kun painike vapautetaan, Pin2 saa loogisen "0". Painikkeella sammutamme ja sytämme sisäänrakennetun LEDin, joka on kytketty Arduino-mikrokontrollerilevyn digitaaliseen porttiin 13.

Luonnos painikkeen liittämiseksi Arduinoon

void setup()(pinMode(13, OUTPUT); pinMode(2, INPUT); // ilmoittaa pin 2 syötteeksi) void loop () ( if (digitalRead (2) == HIGH ) // kun nasta 2 vastaanottaa korkean signaalin // sytyttää LEDin) if (digitalRead (2) == LOW ) // kun nasta 2 vastaanottaa matalan signaalin // sammuta LED } }

Selitykset koodille:

  1. asennusmenettely suoritetaan kerran, menettelyä käytetään mikro-ohjaimen porttien konfigurointiin (porttien toimintatilan määrittäminen);
  2. asennus- ja silmukkaproseduurit on oltava läsnä missä tahansa ohjelmassa (luonnoksessa);
  3. käytetyt vakiot: INPUT , OUTPUT , LOW , HIGH kirjoitetaan isoilla kirjaimilla, muuten kääntäjä ei tunnista niitä ja tuottaa virheen.

Luonnos painikkeen liittämiseksi Arduinoon

Voit myös liittää painikkeet Arduinon analogiseen tuloon (merkitty nimellä Analoginen sisääntulo laudalla). Perimmäinen ero tämän piirin välillä on analogisen portin käyttö mikro-ohjaimessa. LEDin sytyttämiseen ja sammuttamiseen käytämme myös levyn sisäänrakennettua LEDiä. Vaihda kellopainike analogiseen tuloon A1 ja lataa seuraava luonnos taululle.

void(pinMode(13, OUTPUT); // ilmoittaa nastan 13 lähdöksi pinMode(A1, INPUT); // ilmoittaa pin A1 syötteeksi) void loop () ( if (analogRead (A1) > 300) // kun analogista painiketta painetaan(digitalWrite(13, KORKEA); // sytyttää LEDin) if (analogRead (A1)< 300) // kun analoginen painike vapautetaan(digitalWrite(13, LOW); // sammuta LED } }

Selitykset koodille:

  1. tässä luonnoksessa käytämme analogRead-toimintoa lukemaan arvoja analogisesta tulosta A1, kun taas porttia voidaan käyttää digitaalisena;
  2. analogisen tulon arvot voivat vaihdella (kaikki riippuu piirin vastuksen resistanssista) ja voivat ottaa arvoja välillä 0 - 1023.

Hyvää päivää, rakkaat lukijat. Kuten otsikosta ymmärrät, puhumme etupaneelin ja emolevyn liittimien liittämisestä koteloon tai päinvastoin.

Tämä on artikkeli, joka on pieni lisäys aiemmin kirjoitettuun materiaaliin tietokoneen kokoamisesta samalla nimellä "Tietokoneen rakentaminen omin käsin" tai "Mitä tietokoneessa on, osa 2".

Puhumme pienestä puuttuvasta, mutta tärkeästä elementistä - etupaneelin liittimien (kaikenlaiset painikkeet, hehkulamput jne.) kytkemisestä.

Mennä.

Etupaneelin liittäminen - liitäntäohjeet

Järjestelmäyksikön etupaneelissa on yleensä virtapainikkeet ja manuaaliset palautuspainikkeet. Ne on myös liitettävä oikein . Liitäntäkaapelit tehdään yleensä nastojen muodossa (katso yllä olevat nastat).

Ne näyttävät suunnilleen tältä (napsautettava):

Power SW - virtapainikkeen kaapeli; Virta-LED + - - virran merkkivalo (lamppu) kaapelit; HDD LED – latausilmaisinkaapeli (sama valo, joka yleensä vilkkuu); RESET SW - nollauspainikkeen kaapeli.

Myös etupaneelin oikea kytkeminen on tärkeää, koska ilman tätä tietokone ei yksinkertaisesti käynnisty.

Jokaisella emolevyllä on ns. etupaneelin kontaktilohko tai lyhennettynä F-Panel. Yleensä se sijaitsee taulun oikeassa alakulmassa, mutta poikkeuksiakin on. Suunnilleen tältä se näyttää:

Kytkentä Etupaneelin ja sen nastat kytketään käsin, ja sitä varten on aina emolevyn mukana olevissa asiakirjoissa vinkkejä.

Jos sinulla on asiakirjat, nastojen yhdistäminen ei ole vaikeaa. Jos ei, itse emolevyssä on vihjeitä F-Panel-lohkon ympärillä tai lähellä. Jos olet onnekas monta kertaa, emolevyn mukana tulee seuraava sovitin:

Johon liität yksinkertaisesti, kuten yllä näkyy, itse liittimet ja sitten tämä sovitin emolevyyn, ja kaikki käy nopeasti ja yksinkertaisesti. Mutta kaikki eivät ole niin onnekkaita, ja luultavasti pääsit tänne, koska yrität yhdistää kaiken olemassa olevaa (eikä uutta) emolevyä varten.

Mitä muuta kannattaa tietää

Lisäksi järjestelmäyksikön etupaneelissa on joskus USB-liitännät (yleensä pari) ja portit kuulokkeiden/kaiuttimien ja mikrofonin liittämistä varten. Se näyttää jotakuinkin tältä:

Kaapelin nastat näiden ulkoisten USB-porttien liittämiseksi järjestelmäyksikön sisällä näyttävät tältä:

Ne on kytketty emolevyn nastalohkoihin, joita kutsutaan vastaavasti F-USB1 ja F-USB2 (ne eivät välttämättä näytä täsmälleen samalta väriltään ja sijainniltaan kuin alla olevassa kuvakaappauksessa, mutta nastajen muodon ja lukumäärän/sijaintien osalta kaikki on samaa):

Ulkoisten äänitulojen liitännät näyttävät suunnilleen samalta, ainoa ero on nastojen sijainnissa/määrässä, joten etupaneelin kytkeminen ei ole tässä suhteessa kovin vaikea tehtävä.

Ne on helppo liittää (ne eivät yksinkertaisesti sovi muihin nastalohkoihin). Mutta niihin on myös vihjeitä emolevyn mukana olevissa asiakirjoissa:

Itse asiassa kaikki ja ei mitään monimutkaista.

Mitä tehdä, jos emolevyn dokumentaatiota ei ole?

Tai ota suurennuslasi ja tutki huolellisesti edellä mainittu liitäntäliitin tietokoneen emolevyllä:

Yleensä se on ainakin jotenkin, mutta symbolisesti allekirjoitettu, koska toisesta tai kolmannesta voit arvata, mikä on mitä ja yhdistää kaikki oikein. Johdot on kytketty pääsääntöisesti merkinnällä itseensä:

Toisinaan toinen rivi (kaukain) osoittaa kirjoituksia toiseen suuntaan, mutta tämä on melko harvinaista. Tavalla tai toisella, kuten yllä kirjoitin, ei ensimmäistä kertaa, mutta toisella kerralla - arvaatte :)

Jos et näe mitään (onpa näkösi heikko tai kirjoitukset huonosti kirjoitettu), avaa emolevyn valmistajan verkkosivusto ja etsi sieltä "Tuki"-osio (tai jotain vastaavaa), josta voit yleensä lataa ohjeet emolevyltä, jossa on aina kuvattu yhteys.

Jos et löytänyt sitä valmistajan verkkosivuilta, voit löytää sen Internetistä etsimällä "board name" + sana manuaali Jos sinulla on vähän englannin kielen taitoa, löydät sen varmasti , ja sitten voit avata sen, katsoa sitä ja yhdistää sen.

Jälkisana

Jos sinulla on kysyttävää tai lisäyksiä, kirjoita kommentteihin tai käyttämällä . Autan mielelläni ja kuuntelen sinua.

PS: Esitetyt kuvat ovat vain esimerkkejä ja tiedoksi. Ei mainontaa.
PS2: Artikkelin on kirjoittanut henkilö, joka asuu verkossa lempinimellä (ystävä ja projektiassistentti). Mistä kiitän häntä suuresti.