- Material requerit:
- Esquema de connexions:
- Explicació de la programació:
- Configuració del maquinari per a la seqüència de LED parpellejant:
- Càrrega i treball:
Aquest és el segon tutorial d'una seqüència de tutorial en què estem aprenent el MSP430G2 LaunchPad de Texas Instruments mitjançant l' IDE Energia. En l’últim tutorial de Blinky LED, vam introduir el nostre jo a LaunchPad Development Board i a l’Energia IDE, també vam penjar el nostre primer programa que consisteix a parpellejar el LED de la placa a intervals regulars.
En aquest tutorial aprendrem a utilitzar l'opció Digital Read i Digital Write per llegir l'estat d'un dispositiu d'entrada com un commutador i controlar diverses sortides com els LED. Al final d'aquest tutorial, hauríeu après a treballar amb entrades i sortides digitals, que es poden utilitzar per connectar molts sensors digitals com el sensor IR, el sensor PIR, etc. i també per activar o desactivar sortides com LED, Buzzer, etc. dret!!? Comencem.
Material requerit:
- MSP430G2 LaunchPad
- LED de qualsevol color: 8
- Interruptor - 2
- Resistència 1k: 8
- Connexió de cables
Esquema de connexions:
Al nostre tutorial anterior, vam observar que la plataforma de llançament inclou dos LEDs i un interruptor a la placa. Però en aquest tutorial necessitarem més que això, ja que tenim previst encendre vuit llums LED en una seqüència quan es prem un botó. També canviarem la seqüència quan es prem un altre botó per fer-lo interessant. Per tant, hem de construir un circuit amb 8 llums LED i dos commutadors; el diagrama complet del circuit es pot trobar a continuació.

Aquí els 8 LED són les sortides i els dos commutadors són les entrades. Podem connectar-los a qualsevol pin d'E / S de la placa, però he connectat els LRD del pin P1.0 a P2.1 i canviar 1 i 2 al pin P2.4 i P2.3 respectivament, tal com es mostra més amunt.
Tots els pins del càtode del LED estan lligats a terra i el pin d'ànode es connecta als pins d'E / S a través d'una resistència. Aquesta resistència s’anomena resistència de limitació de corrent, aquesta resistència no és obligatòria per a un MSP430, perquè el corrent màxim que pot obtenir el pin d’entrada / sortida és de només 6 mA i la tensió del pin és de 3,6 V No obstant això, és una bona pràctica utilitzar-los. Quan algun d'aquests pins digitals puja, el LED corresponent s'encén. Si recordeu els darrers tutorials del programa LED, recordareu que digitalWrite (LED_pin_name, HIGH) farà que el LED brilli i digitalWrite (LED_pin_name, LOW) girarà del LED.
Els commutadors són el dispositiu d’entrada, un extrem del commutador està connectat al terminal de terra i l’altre està connectat als pins digitals P2.3 i P2.4. Això vol dir que cada vegada que premem l'interruptor, el pin d'E / S (2.3 o 2.4) es posarà a terra i es deixarà lliure si no es prem el botó. Vegem com podem utilitzar aquest arranjament mentre programem.
Explicació de la programació:
El programa s’ha d’escriure per controlar els 8 LED de manera seqüencial quan es prem l’interruptor 1 i, quan es prem l’interruptor 2, s’ha de canviar la seqüència. El programa complet i el vídeo de demostració es poden trobar a la part inferior d’aquesta pàgina. Més endavant explicaré el programa línia per línia perquè pugueu entendre-ho fàcilment.
Com sempre, hauríem de començar amb la funció void setup () dins de la qual declararíem que els pins que estem utilitzant són pin d'entrada o de sortida. Al nostre programa es generen els 8 pins LED i els 2 commutadors són entrades. Aquests 8 LED estan connectats de P1.0 a P2.1, que és el pin número 2 a 9 del tauler. A continuació, els interruptors es connecten als pins P2.3 i PIN 2.4, que són els pins número 11 i 12 respectivament. Per tant, hem declarat el següent a la configuració nul·la ()
void setup () {for (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } per a (int i = 2; i <= 9; i ++) {digitalWrite (i, BAIX); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
Com sabem, la funció pinMode () declara que el pin ha de ser sortida o entrada i la funció digitalWrite () el fa alt (ON) o baix (OFF). Hem fet servir un bucle for per fer aquesta declaració per reduir el nombre de línies. La variable "i" s'incrementa de 2 a 9 en el de bucle i per cada increment l'interior funció s'executarà. Una altra cosa que us pot confondre és el terme " INPUT_PULLUP ". Es pot declarar un pin com a entrada només cridant la funció pinMode (Pin_name, INPUT), però aquí hem utilitzat un INPUT_PULLUP en lloc d'una INPUT i tots dos tenen un canvi notable.
Quan fem servir pins del microcontrolador, el pin s’hauria de connectar a baix o a alt. En aquest cas, els pins 11 i 12 estan connectats a l'interruptor que es connectarà a terra quan es prem. Però quan no es prem l'interruptor, el pin no està connectat a res, aquesta condició s'anomena pin flotant i és dolent per als microcontroladors. Per tant, per evitar-ho, fem servir una resistència pull-up o pull-down per mantenir el pin en un estat quan entra flotant. Al microcontrolador MSP430G2553, els pins d'E / S tenen incorporada una resistència de tracció. Per fer-ho, tot el que hem de fer és trucar a INPUT_PULLUP en lloc de INPUT durant la declaració, tal com hem fet anteriorment.
Ara entrem a la funció void loop () . Tot el que estigui escrit en aquesta funció s'executarà per sempre. El primer pas del nostre programa és comprovar si es prem l’interruptor i, si es prem, hauríem de començar a parpellejar els LED en seqüència. Per comprovar si es prem el botó, s'utilitza la següent línia
if (digitalRead (12) == BAIX)
Aquí la nova funció és la funció digitalRead () , aquesta funció llegirà l’estat d’un pin digital i tornarà ALTA (1) quan el pin obtingui una mica de tensió i tornarà a ser BAIX (0) quan el pin estigui connectat a terra. Al nostre maquinari, el pin només es posarà a terra quan premem el botó, en cas contrari serà alt ja que hem utilitzat una resistència de tracció. Per tant, fem servir la sentència if per comprovar si s’ha premut el botó.
Un cop premut el botó entrem al bucle infinit mentre que (1) . Aquí és on comencem a parpellejar els LED en seqüència. A continuació es mostra un bucle while infinit i tot el que hi ha escrit dins del bucle s’executarà per sempre fins a un descans; s'utilitza la declaració.
whiel (1) {}
Dins de l’infinit mentre comprovem l’estat del segon commutador que està connectat al pin 11.
Si es pressiona aquest interruptor, parpellejarem el LED en una seqüència en particular, sinó que el farem parpellejar en una altra seqüència.
if (digitalRead (11) == BAIX) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); retard (100); } per a (int i = 2; i <= 9; i ++) digitalWrite (i, BAIX); }
Per parpellejar el LED en seqüència, tornem a utilitzar el bucle for , però aquesta vegada fem servir un petit retard de 100 mil·lisegons mitjançant la funció de retard (100) de manera que puguem notar que el LED augmenta. Per fer brillar només un LED a la vegada, també en fem servir un altre per a bucle per apagar tots els LED. Per tant, encenem l’espera d’un led durant un temps i, a continuació, apaguem tots els LED i, a continuació, incrementem el recompte d’encesa del LED durant un temps i el cicle continua. Però tot això passarà mentre no es prem el segon interruptor.
Si es prem el segon interruptor , canviem la seqüència, el programa serà més o menys el mateix esperat per a la seqüència de la qual s’encén el LED. Les línies que es mostren a continuació proven de fer un cop d'ull i esbrinar què s'ha canviat.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); retard (100); } per a (int i = 2; i <= 9; i ++) digitalWrite (i, BAIX); }
Sí, el bucle for s'ha modificat. Anteriorment, vam fer que el LED brillés des del número 2 i fins al 9. Però ara començarem des del número 9 i disminuirem fins al 2. D'aquesta manera podem observar si es pressiona l'interruptor o no.
Configuració del maquinari per a la seqüència de LED parpellejant:
Està prou bé de tota la part de teoria i programari. Obtenim alguns components i vegem com es veu aquest programa en acció. El circuit és molt senzill i, per tant, es pot construir fàcilment sobre una taula de treball. Però he soldat el LED i els interruptors del tauler de perfils només perquè semblin netes. El tauler de perf que he soldat es mostra a continuació.

Com podeu veure, tenim els pins de sortida del LED i l'interruptor tret com a pins de connector. Ara hem utilitzat els cables del connector femella a femella per connectar els LEDs i els commutadors a la placa MSP430 LaunchPad, tal com es mostra a la imatge següent.

Càrrega i treball:
Un cop hàgiu acabat el maquinari, només cal que connecteu la placa MSP430 a l'ordinador i que obriu l'IDE Energia i utilitzeu el programa que apareix al final d'aquesta pàgina. Assegureu-vos que el tauler correcte i el port COM estiguin seleccionats a l'IDE Energia i feu clic al botó Puja. El programa s'hauria de compilar correctament i, un cop carregat, es mostrarà "Càrrega feta".
Ara premeu el botó 1 del tauler i el LED hauria d’il·luminar-se en seqüència, tal com es mostra a continuació

També podeu mantenir premut el segon botó per comprovar si la seqüència canvia. El funcionament complet del projecte es mostra al vídeo següent. Si esteu satisfet amb els resultats, podeu provar de fer alguns canvis al codi, com ara alterar el temps de retard, canviar la seqüència, etc. Això us ajudarà a aprendre i comprendre millor.
Espero que hàgiu entès el tutorial i que hàgiu après alguna cosa útil. Si teniu algun problema, no dubteu a publicar la pregunta a la secció de comentaris o a utilitzar els fòrums. Ens reunim en un altre tutorial on aprendrem a llegir tensions analògiques mitjançant la nostra plataforma de llançament MSP30.
