- Tarvittava materiaali:
- Piirikaavio:
- Ohjelmoinnin selitys:
- Laitteiston asetukset vilkkuvaa LED-jaksoa varten:
- Lataaminen ja työskentely:
Tämä on opetusjakson toinen opetusohjelma, jossa opimme Texas Instrumentsin MSP430G2 LaunchPad -ohjelmaa Energia IDE: n avulla. Viimeisessä Blinky LED -opetusohjelmassa esiteltiin itsemme LaunchPad-kehitystoimikunnalle ja Energia IDE: lle, ja lähetimme myös ensimmäisen ohjelmamme, joka on vilkkua aluksella olevaa LEDiä säännöllisesti.
Tässä opetusohjelmassa opitaan, kuinka digitaalisen lukemisen ja digitaalisen kirjoittamisen avulla voidaan lukea syöttölaitteen tila kytkimen tapaan ja ohjata useita ulostuloja, kuten LED-valoja. Tämän opetusohjelman lopussa olisit oppinut työskentelemään digitaalisten tulojen ja lähtöjen kanssa, joita voidaan käyttää monien digitaalisten anturien, kuten IR-anturin, PIR-anturin jne., Liittämiseen ja myös ulostulojen, kuten LED, summeri jne., Kytkemiseen päälle tai pois päältä. Kuulostaa mielenkiintoiselta eikö !! Aloitetaan.
Tarvittava materiaali:
- MSP430G2 LaunchPad
- Minkä tahansa värinen LED - 8
- Kytkin - 2
- 1k vastus - 8
- Johtojen liittäminen
Piirikaavio:
Edellisessä opetusohjelmassa huomasimme, että käynnistysalustalla on kaksi LEDiä ja kytkin taululla. Mutta tässä opetusohjelmassa tarvitsemme enemmän kuin, koska aiomme hehkua kahdeksan LED-valoa peräkkäin, kun painiketta painetaan. Muutamme myös järjestystä, kun jotain muuta painiketta painetaan vain, jotta se olisi mielenkiintoinen. Joten meidän on rakennettava piiri, jossa on 8 LED-valoa ja kaksi kytkintä, täydellinen kytkentäkaavio löytyy alla.
Tässä 8 LEDiä ovat lähdöt ja kaksi kytkintä ovat tuloja. Voimme liittää nämä mihin tahansa piirilevyn I / O-nastaan, mutta olen kytkenyt LRD: t nastasta P1.0 - P2.1 ja kytkimet 1 ja 2 nastoihin P2.4 ja P2.3, kuten yllä on esitetty.
Kaikki LEDin katoditapit on sidottu maahan ja anoditappi on kytketty I / O-nastoihin vastuksen kautta. Tätä vastusta kutsutaan virtaa rajoittavaksi vastukseksi, tämä vastus ei ole pakollinen MSP430: lle, koska sen I / O-nastan suurin lähde voi olla vain 6 mA ja jännite nastassa on vain 3,6 V. On kuitenkin hyvä käyttää niitä. Kun jokin näistä digitaalisista nastoista nousee korkealle, vastaava LED syttyy. Jos muistat viimeisimmät opetusohjelmat LED-ohjelman, muistat, että digitalWrite (LED_pin_nimi, HIGH) saa LED: n hehkumaan ja digitalWrite (LED_pin_name, LOW) kääntämään LED: n.
Kytkimet ovat syöttölaite, kytkimen toinen pää on kytketty maadoitusliittimeen ja toinen digitaalisiin nastoihin P2.3 ja P2.4. Tämä tarkoittaa, että aina kun painamme kytkintä, I / O-tappi (2.3 tai 2.4) maadoitetaan ja jätetään vapaaksi, jos painiketta ei paineta. Katsotaanpa, kuinka voimme käyttää tätä järjestelyä ohjelmoinnin aikana.
Ohjelmoinnin selitys:
Ohjelma on kirjoitettava ohjaamaan 8 LEDiä peräkkäin, kun kytkintä 1 painetaan, ja sitten kun kytkintä 2 painetaan, järjestystä on muutettava. Täydellinen ohjelma ja esittelyvideo löytyy alareunassa tällä sivulla. Seuraavassa selitän ohjelmaa rivi riviltä, jotta voit helposti ymmärtää sen.
Kuten aina, meidän tulisi aloittaa void setup () -toiminnolla, jonka sisällä ilmoitamme käyttämämme nastat olevan tulo- tai lähtötappi. Ohjelmassamme on 8 LED-nastaa ja kaksi kytkintä ovat tuloja. Nämä 8 LEDiä on kytketty P1.0: sta P2.1: een, joka on piirilevyn nastat 2-9. Sitten kytkimet kytketään liittimiin P2.3 ja Pin 2.4, jotka ovat vastaavasti nastat 11 ja 12. Joten olemme julistaneet seuraavat virheellisessä asennuksessa ()
void setup () {for (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } for (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
Kuten tiedämme, pinMode () -toiminto julistaa nastan lähdöksi tai syötteeksi ja digitalWrite () -toiminto tekee siitä korkean (ON) tai matalan (OFF). Olemme käyttäneet for for loopia tämän ilmoituksen tekemiseen vähentämään rivien määrää. Muuttujaa “i” kasvatetaan 2: stä 9: ään for for -silmukassa ja jokaiselle lisäykselle suoritetaan sisällä oleva toiminto. Toinen asia, joka saattaa hämmentää sinua, on termi ” INPUT_PULLUP ”. Tappi voidaan ilmoittaa syötteeksi kutsumalla vain toiminto pinMode (Pin_name, INPUT), mutta tässä olemme käyttäneet INPUT_PULLUP -tuloa INPUT: n sijaan ja molemmilla on huomattava muutos.
Kun käytämme mitä tahansa mikro-ohjaimen nastaa, tappi tulisi joko liittää matalaan tai korkeaan. Tällöin tapit 11 ja 12 on kytketty kytkimeen, joka kytketään maahan, kun sitä painetaan. Mutta kun kytkintä ei paineta, tapia ei ole kytketty mihinkään, tätä tilaa kutsutaan kelluvaksi tapiksi ja se on huono mikro-ohjaimille. Joten tämän välttämiseksi käytämme joko ylös- tai alasvetovastusta pitämään tapin tilaan, kun se joutuu kellumaan. Vuonna MSP430G2553 Mikro I / O-nastojen on leuanveto vastus sisäänrakennettu. Jos haluat käyttää tätä, meidän on vain kutsuttava INPUT_PULLUP eikä INPUT ilmoituksen aikana, kuten w on tehnyt edellä.
Nyt päästään vaiheeseen void loop () . Mitä tässä toiminnossa on kirjoitettu, se toteutetaan ikuisesti. Ohjelman ensimmäinen vaihe on tarkistaa, onko kytkintä painettu ja jos sitä painetaan, meidän pitäisi alkaa vilkkua LED-valoja peräkkäin. Seuraavaa riviä käytetään tarkistamaan, painetaanko painiketta
jos (digitalRead (12) == MATALA)
Tässä uusi toiminto on digitalRead () -toiminto, tämä toiminto lukee digitaalisen nastan tilan ja palauttaa HIGH (1), kun tappi saa jonkin verran jännitettä, ja palauttaa matalan LOW (0), kun tappi on maadoitettu. Laitteistossamme tappi maadoitetaan vasta, kun painamme painiketta, muuten se on korkea, koska olemme käyttäneet vetovastusta. Joten käytämme if- käskyä tarkistamaan, painetaanko painiketta.
Kun painiketta on painettu, pääsemme äärettömään (1) -silmukkaan. Täällä aloitamme LEDien vilkkumisen peräkkäin. Ääretön, kun silmukka on esitetty alla ja mitä on kirjoitettu silmukan sisällä kestää ikuisesti, kunnes tauon; lausetta käytetään.
whiel (1) {}
Infiniitin sisällä, kun tarkistamme toisen kytkimen tilan, joka on kytketty nastaan 11.
Jos tätä kytkintä painetaan, LED vilkkuu tietyssä järjestyksessä, muuten se vilkkuu toisessa järjestyksessä.
if (digitalRead (11) == MATALA) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); viive (100); } (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Ja vilkkuvat LED järjestyksessä me jälleen käyttää varten silmukka, mutta tällä kertaa käytämme pieni viive 100 millisekuntia käyttämällä viive (100) toimii niin, että voimme huomata LED saada korkea. Jotta vain yksi LED hehkuu kerrallaan myös käyttää toista varten silmukka sammuttaa kaikki LED. Joten otamme led-odotuksen käyttöön jonkin aikaa ja sammutamme sitten kaikki LED-valot, sitten lisäämme laskentakytkennän LED-odotusta jonkin aikaa ja jakso jatkuu. Mutta kaikki tämä tapahtuu niin kauan kuin toista kytkintä ei paineta.
Jos toista kytkintä painetaan, muutamme järjestystä, ohjelma on suunnilleen sama odotus sekvenssille, johon LED palaa. Alla olevat viivat yrittävät katsoa ja selvittää, mitä on muutettu.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); viive (100); } (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Kyllä, for- silmukkaa on muutettu. Aikaisemmin saimme LEDin palamaan numerosta 2 ja aina 9: ään asti. Mutta nyt aloitamme numerosta 9 ja vähennämme kokonaan arvoon 2. Tällä tavoin voimme huomata kytkimen painamisen vai ei.
Laitteiston asetukset vilkkuvaa LED-jaksoa varten:
Okei tarpeeksi teoria- ja ohjelmisto-osasta. Hankitaan joitain komponentteja ja katsotaan, miten tämä ohjelma näyttää toiminnassa. Piiri on hyvin yksinkertainen ja voidaan siten helposti rakentaa leipälaudalle. Mutta olen juotanut LEDin ja kytkimet perf-levylle vain saadaksesi sen näyttämään siistiltä. Juotettu perf-levy on esitetty alla.
Kuten näette, LEDin ja kytkimen ulostulotapit on otettu pois liitintapina. Nyt olemme käyttäneet naaras-naaras-liitäntäjohtoja liittämään LEDit ja kytkimet ulospäin MSP430 LaunchPad -levyyn alla olevan kuvan mukaisesti.
Lataaminen ja työskentely:
Kun olet valmis laitteistoon, liitä vain MSP430-kortti tietokoneellesi, avaa Energia IDE ja käytä tämän sivun lopussa olevaa ohjelmaa. Varmista, että oikea kortti ja COM-portti on valittu Energia IDE: ssä ja napsauta Lähetä-painiketta. Ohjelman tulisi kääntyä onnistuneesti, ja kun se on ladattu, siinä näkyy "Valmis lähetys".
Paina nyt piirilevyn painiketta 1, ja LEDin pitäisi syttyä peräkkäin alla olevan kuvan mukaisesti
Voit myös pitää toista painiketta painettuna tarkistaaksesi, muuttuuko järjestys. Projektin täydellinen työskentely on esitetty alla olevassa videossa. Jos olet tyytyväinen tuloksiin, voit yrittää tehdä koodiin joitain muutoksia, kuten muuttaa viiveaikaa muuttamalla järjestystä jne. Tämä auttaa sinua oppimaan ja ymmärtämään paremmin.
Toivottavasti olet ymmärtänyt opetusohjelman ja oppinut jotain hyödyllistä sen kanssa. Jos sinulla on ollut ongelmia, lähetä kysymys kommenttiosioon tai käytä foorumeita. Tapaamme toisessa opetusohjelmassa, jossa opitaan kuinka lukea analogisia jännitteitä MSP30-käynnistysalustamme avulla.