- Kinakailangan na Materyal:
- Diagram ng Circuit:
- Paliwanag sa Programming:
- Pag-setup ng Hardware para sa Blinking LED Sequence:
- Pag-upload at Paggawa:
Ito ang pangalawang tutorial ng isang pagkakasunud-sunod ng tutorial kung saan natututunan namin ang MSP430G2 LaunchPad mula sa Texas Instruments gamit ang Energia IDE. Sa huling tutorial ng Blinky LED na ipinakilala namin ang aming sarili sa LaunchPad Development Board at sa Energia IDE, na-upload din namin ang aming unang programa na upang i-blink ang on board LED sa isang regular na agwat.
Sa tutorial na ito matututunan namin kung paano gamitin ang pagpipiliang Digital Read at Digital Writing upang basahin ang katayuan ng isang input na aparato tulad ng isang switch, at makontrol ang maraming output tulad ng LED's. Sa pagtatapos ng tutorial na ito ay natutunan mong magtrabaho kasama ang Mga Digital Input at output, na maaaring magamit upang mai-interface ang maraming mga digital sensor tulad ng IR sensor, sensor ng PIR atbp at upang i-on o i-off ang mga output tulad ng LED, Buzzer atbp. Tunog kagiliw-giliw. diba !!? Magsimula na tayo.
Kinakailangan na Materyal:
- MSP430G2 LaunchPad
- LED ng anumang kulay - 8
- Lumipat - 2
- 1k Resistor - 8
- Mga kumokonekta na mga wire
Diagram ng Circuit:
Sa aming nakaraang tutorial, napansin namin na ang launch pad mismo ay may dalawang LED at isang switch sa board. Ngunit sa tutorial na ito kakailanganin namin ng higit pa sa iyon, dahil nagpaplano kaming mag- glow ng walong mga LED light sa isang pagkakasunud-sunod kapag pinindot ang isang pindutan. Babaguhin din namin ang pagkakasunud-sunod kapag ang isa pang pindutan ay pinindot lamang upang gawin itong kawili-wili. Kaya kailangan nating bumuo ng isang circuit na may 8 LED lights at dalawang switch, ang kumpletong circuit diagram ay matatagpuan sa ibaba.
Narito ang 8 LED's ay ang mga output at ang dalawang switch ay ang mga input. Maaari naming ikonekta ang mga ito sa anumang I / O pin sa board ngunit nakakonekta ko ang LRD mula sa pin P1.0 hanggang P2.1 at ilipat ang 1 at 2 upang i-pin ang P2.4 at P2.3 ayon sa ipinakita sa itaas.
Ang lahat ng mga pin ng katod ng LED ay nakatali sa lupa at ang anode pin ay konektado sa mga I / O pin sa pamamagitan ng isang risistor. Ang risistor na ito ay tinatawag na Kasalukuyang nililimitahan na risistor, ang resistor na ito ay hindi sapilitan para sa isang MSP430 dahil ang maximum na kasalukuyang I / O na pin na mapagkukunan ay 6mA lamang at ang boltahe sa pin ay 3.6V lamang. Gayunpaman ito ay isang mahusay na kasanayan upang magamit ang mga ito. Kapag ang alinman sa mga digital na pin na ito ay mataas ang kani-kanilang LED ay bubukas. Kung maaari mong isipin ang huling programa ng LED tutorial, pagkatapos ay maaalala mo na ang digitalWrite (LED_pin_name, HIGH) ay gagawing LED glow at digitalWrite (LED_pin_name, LOW) ay magpapasara sa LED.
Ang mga switch ay ang input aparato, ang isang dulo ng switch ay konektado sa ground terminal at ang isa ay konektado sa mga digital na pin na P2.3 at P2.4. Nangangahulugan ito na tuwing pinindot namin ang switch ang I / O pin (2.3 o 2.4) ay mai-grounded at maiiwan na libre kung ang pindutan ay hindi pinindot. Tingnan natin kung paano namin magagamit ang pag-aayos na ito habang nag-program.
Paliwanag sa Programming:
Ang programa ay dapat na nakasulat upang makontrol ang 8 LED sa isang pagkakasunud-sunod ng paraan kapag ang switch 1 ay pinindot at pagkatapos ay kapag ang switch 2 ay pinindot ang pagkakasunud-sunod ay dapat mabago. Ang kumpletong programa at pagpapakita ng Video ay matatagpuan sa ilalim ng pahinang ito. Dagdag sa ibaba ay ipapaliwanag ko ang linya ng programa sa pamamagitan ng linya upang madali mong maunawaan ito.
Tulad ng dati dapat kaming magsimula sa walang bisa na pag-setup () na pag- andar sa loob kung saan namin ideklara ang mga pin na ginagamit namin ay input o output pin. Sa aming programa ang 8 LED pin ay output at ang 2 switch ay input. Ang 8 LEDs na ito ay konektado mula P1.0 hanggang P2.1 na kung saan ay ang pin number 2 hanggang 9 sa board. Pagkatapos ang mga switch ay konektado sa pin P2.3 at Pin 2.4 na kung saan ay ang pin number 11 at 12 ayon sa pagkakabanggit. Kaya idineklara namin ang sumusunod sa void setup ()
walang bisa ang pag-set up () {para sa (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } para sa (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
Tulad ng alam natin na ang pagpapaandar ng pinMode () ay idineklara ang pin na maging output o input at ang pagpapaandar ng digitalWrite () ay ginagawang mataas (ON) o mababa (OFF). Gumamit kami ng isang para sa loop upang gawin ang deklarasyong ito upang mabawasan ang bilang para sa mga linya. Ang variable na "i" ay madagdagan mula 2 hanggang 9 sa para sa loop at para sa bawat pagtaas ang pagpapaandar sa loob ay papatayin. Ang isa pang bagay na maaaring malito ka ay ang salitang " INPUT_PULLUP ". Ang isang pin ay maaaring ideklara bilang input sa pamamagitan lamang ng pagtawag sa pagpapaandar na pinMode (Pin_name, INPUT) ngunit dito nagamit namin ang isang INPUT_PULLUP sa halip na isang INPUT at pareho silang may kapansin-pansing pagbabago.
Kapag gumagamit kami ng anumang mga pin ng microcontroller, ang pin ay dapat na konektado sa mababa o sa mataas. Sa kasong ito ang pin 11 at 12 ay konektado sa switch na konektado sa ground kapag pinindot. Ngunit kapag ang switch ay hindi pinindot ang pin ay hindi konektado sa anumang bagay ang kondisyong ito ay tinatawag na isang lumulutang na pin at masama ito para sa mga microcontroller. Kaya upang maiwasan ito maaari kaming gumamit ng pull-up o pull-down na risistor upang hawakan ang pin sa isang estado kapag lumulutang ito. Sa MSP430G2553 Microcontroller ang I / O pin ay may built-up na risistor na in-built. Upang magamit na ang kailangan lamang nating gawin ay tumawag sa INPUT_PULLUP sa halip na INPUT habang nagdedeklara tulad ng nagawa sa itaas.
Hinahayaan ngayon ang hakbang sa pag- andar ng void loop () . Anumang nakasulat sa pagpapaandar na ito ay papatayin magpakailanman. Ang unang hakbang sa aming programa ay upang suriin kung ang switch ay pinindot at kung pinindot dapat nating simulan ang blink ng LEDs sa pagkakasunud-sunod. Upang suriin kung ang pindutan ay pinindot ang sumusunod na linya ay ginamit
kung (digitalRead (12) == LOW)
Dito ang bagong pagpapaandar ay ang pagpapaandar na digitalRead () , babasahin ng pagpapaandar na ito ang katayuan ng isang digital na pin at ibabalik ang TAAS ( 1) kapag ang pin ay nakakakuha ng ilang boltahe at ibabalik ang mababang LOW (0) kapag ang pin ay na-grounded. Sa aming hardware, ang pin ay ibabatay lamang kapag pinindot namin ang pindutan kung hindi man ay magiging mataas ito mula nang gumamit kami ng isang pull-up risistor. Kaya ginagamit namin ang kung pahayag upang suriin kung ang pindutan ay pinindot.
Kapag ang pindutan ay pinindot napunta kami sa walang hanggan habang (1) loop. Dito namin sinisimulan ang pagpikit ng mga LED nang magkakasunod. Ang isang walang hanggan habang ang loop ay ipinapakita sa ibaba at anuman ang nakasulat sa loob ng loop ay tatakbo magpakailanman hanggang sa isang pahinga; ginamit ang pahayag.
whiel (1) {}
Sa loob ng walang hanggan habang sinusuri namin ang katayuan ng pangalawang switch na konektado sa pin 11.
Kung pinindot ang switch na ito ay kumikislap tayo sa LED sa isang partikular na pagkakasunud-sunod ay kukurin natin ito sa isa pang pagkakasunud-sunod.
kung (digitalRead (11) == LOW) {para sa (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); pagkaantala (100); } para sa (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Upang makurap ang LED nang magkakasunod ay ginagamit namin muli ang para sa loop, ngunit sa oras na ito ay gumagamit kami ng isang maliit na pagkaantala ng 100 milliseconds gamit ang pagpapaandar (100) na pagpapaandar upang mapansin namin ang LED na nagiging mataas. Upang makagawa lamang ng isang LED glow sa bawat oras ay gumagamit din kami ng isa pa para sa loop upang i-off ang lahat ng LED. Kaya binuksan namin ang isang humantong paghihintay para sa ilang oras at pagkatapos ay i-off ang lahat ng LED pagkatapos ay dagdagan ang bilang ng turn sa LED maghintay para sa ilang oras at ang cycle ay nagpatuloy. Ngunit ang lahat ng ito ay mangyayari hangga't ang pangalawang switch ay hindi pinindot.
Kung ang pangalawang switch ay pinindot pagkatapos ay binabago namin ang pagkakasunud-sunod, ang programa ay magiging higit pa o mas mababa sa parehong inaasahan para sa pagkakasunud-sunod ng kung saan naka-on ang LED. Ang mga linya ay ipinapakita sa ibaba subukang tingnan at alamin kung ano ang nabago.
iba pa {para sa (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); pagkaantala (100); } para sa (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Oo, ang para sa loop ay binago. Dati ginawa namin ang LED upang mag-glow mula sa numero 2 at hanggang sa 9. Ngunit ngayon magsisimula kami mula sa numero 9 at pagbawas hanggang sa 2. Sa ganitong paraan maaari nating mapansin kung ang switch ay pinindot o hindi.
Pag-setup ng Hardware para sa Blinking LED Sequence:
Tama na ang lahat ng bahagi ng teorya at software. Hayaan, kumuha ng ilang mga bahagi at tingnan kung paano kumikilos ang program na ito. Ang circuit ay napaka-simple at samakatuwid ay madaling maitayo sa isang breadboard. Ngunit na- solder ko ang LED at lumipat sa perf board upang gawin itong maayos. Ang perf board na aking pinaghinang ay ipinapakita sa ibaba.
Tulad ng nakikita mong mayroon kaming mga output pin ng LED at inilipat bilang mga pin ng konektor. Ngayon ay ginamit namin ang babae sa mga wire na konektor ng babae upang ikonekta ang mga LED at lumipat sa labas ng board ng MSP430 LaunchPad tulad ng ipinakita sa larawan sa ibaba.
Pag-upload at Paggawa:
Kapag tapos ka na sa hardware, ikonekta lamang ang board ng MSP430 sa iyong computer at buksan ang Energia IDE at gamitin ang program na ibinigay sa pagtatapos ng pahinang ito. Siguraduhin na ang tamang board at COM port ay napili sa Energia IDE at mag-click sa Upload button. Ang programa ay dapat na matagumpay na naipon at sa sandaling na-upload ay ipapakita ang "Tapos na sa Pag-upload".
Ngayon pindutin ang pindutan na 1 sa pisara at ang LED ay dapat na ilaw sa pagkakasunud-sunod tulad ng ipinakita sa ibaba
Maaari mo ring hawakan ang pangalawang pindutan upang suriin kung ang pagkakasunud-sunod ay nagbago. Ang kumpletong pagtatrabaho ng proyekto ay ipinapakita sa video sa ibaba. Kung nasiyahan ka sa mga resulta maaari mong subukang gumawa ng ilang mga pagbabago sa code tulad ng pagbabago ng oras ng pagkaantala na binabago ang pagkakasunud-sunod atbp Matutulungan ka nitong matuto at maunawaan nang mabuti.
Inaasahan kong naintindihan mo ang tutorial at natutunan ang isang bagay na kapaki-pakinabang dito. Kung naharap mo ang anumang problema mangyaring huwag mag-atubiling i-post ang tanong sa seksyon ng komento o gamitin ang mga forum. Magkita tayo sa isa pang tutorial kung saan matututunan kung paano basahin ang mga analog voltages gamit ang aming MSP30 launch pad.