- Szükséges anyag:
- Kördiagramm:
- Programozási magyarázat:
- Hardver beállítása villogó LED-szekvenciához:
- Feltöltés és munka:
Ez a bemutatósorozat második oktatóanyaga, amelyben az MSP430G2 LaunchPad-ot tanuljuk a Texas Instruments-től az Energia IDE segítségével. Az utolsó Blinky LED oktatóanyagban bemutattuk önmagunkat a LaunchPad Fejlesztői Testületnek és az Energia IDE-nek, és feltöltöttük az első programunkat is, amely a fedélzeti LED villogása rendszeres időközönként.
Ebben az oktatóanyagban megtanuljuk, hogyan kell használni a Digitális olvasás és a Digitális írás opciót egy bemeneti eszköz állapotának leolvasására, mint egy kapcsoló, és több kimenet vezérlésére, például a LED-ekre. Az oktatóanyag végén megtanult volna dolgozni a digitális bemenetekkel és kimenetekkel, amelyek felhasználhatók számos digitális érzékelő, például IR-érzékelő, PIR-érzékelő stb. Összekapcsolására, valamint a kimenetek be- és kikapcsolására, például LED-re, hangjelzőre stb. jobb!!? Kezdjük el.
Szükséges anyag:
- MSP430G2 LaunchPad
- Bármilyen színű LED - 8
- Kapcsoló - 2
- 1k ellenállás - 8
- Csatlakozó vezetékek
Kördiagramm:
Előző oktatóanyagunkban észrevettük, hogy maga az indítópad két LED-del és egy kapcsolóval van ellátva a táblán. De ebben az oktatóanyagban ennél többre lesz szükségünk, mivel azt tervezzük, hogy egy gombnyomásra nyolc LED-es lámpát fogunk egymás után felgyújtani. Megváltoztatjuk a sorrendet is, amikor újabb gombot nyomunk meg, csak hogy érdekessé tegyük. Tehát meg kell építenünk egy áramkört 8 LED-es lámpával és két kapcsolóval, a teljes kapcsolási rajz alább található.
Itt a 8 LED a kimenetek, a két kapcsoló pedig a bemenet. Csatlakoztathatjuk ezeket a kártya bármely I / O tűjéhez, de az LRD-ket a P1.0 és P2.1 érintkezőkhöz csatlakoztattam, az 1. és 2. kapcsolót pedig a P2.4 és P2.3 csapokhoz, a fentiek szerint.
A LED összes katódtüskéje a földhöz van kötve, és az anódcsap egy ellenálláson keresztül csatlakozik az I / O csapokhoz. Ezt az ellenállást áramkorlátozónak nevezzük, ez az ellenállás nem kötelező az MSP430 esetében, mert az I / O tű által leadható maximális áram csak 6mA, a feszültség pedig csak 3,6V. Azonban jó gyakorlat ezek használata. Amikor ezek közül a digitális csapok közül bármelyik magasra kerül, a megfelelő LED kigyullad. Ha felidézi az utolsó oktatóanyagok LED programját, akkor emlékezni fog arra, hogy a digitalWrite (LED_pin_neve, HIGH) megvilágítja a LED- et, a digitalWrite (LED_pin_neve, LOW) pedig bekapcsolja a LED-et.
A kapcsolók a bemeneti eszközök, a kapcsoló egyik vége a földi csatlakozóhoz, a másik pedig a P2.3 és P2.4 digitális csapokhoz van csatlakoztatva. Ez azt jelenti, hogy valahányszor megnyomjuk a kapcsolót, az I / O csap (2.3 vagy 2.4) földelve lesz, és szabadon marad, ha nem nyomjuk meg a gombot. Nézzük meg, hogyan használhatjuk ezt az elrendezést programozás közben.
Programozási magyarázat:
A programot úgy kell írni, hogy a 8 LED-et egymás után vezérelhesse, amikor az 1 kapcsolót megnyomják, majd a 2-es kapcsoló megnyomásakor meg kell változtatni a sorrendet. A teljes program és a bemutató videó az oldal alján található. Az alábbiakban soronként elmagyarázom a programot, hogy könnyen megérthesse.
Mint mindig, el kell kezdenünk a void setup () függvényt, amelyen belül deklaráljuk, hogy az általunk használt csapok bemeneti vagy kimeneti tűk. Programunkban a 8 LED-érintkező kimenet, a 2 kapcsoló pedig bemenet. Ez a 8 LED a P1.0-tól a P2.1-ig csatlakozik, amely a táblán lévő 2-től 9-ig tartó tű. Ezután a kapcsolókat a P2.3 és a 2.4 érintkezőkhöz kell csatlakoztatni, amelyek a 11. és 12. tűk. Tehát a következőket deklaráltuk az érvénytelen beállításban ()
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); }
Mint tudjuk, a pinMode () függvény kinyomtatja a tűt vagy bemenetet, és a digitalWrite () funkció magasra (ON) vagy alacsonyra (OFF) teszi. A for ciklust használtuk a deklaráció elkészítéséhez a sorok számának csökkentésére. Az „i” változó 2-től 9-ig növekszik a for ciklusban, és minden egyes növekménynél a benne lévő függvény végrehajtásra kerül. Egy másik dolog, ami megzavarhatja az „ INPUT_PULLUP ” kifejezés. A PIN- kód deklarálható bemenetként, csak meghívva a pinMode (Pin_name, INPUT) függvényt, de itt INPUT_PULLUP- ot használtunk INPUT helyett, és mindkettőnél észrevehető változás történt.
Ha bármilyen mikrovezérlő csapot használunk, akkor a csapnak alacsonynak vagy magasnak kell lennie. Ebben az esetben a 11 és 12 csapok csatlakoznak a kapcsolóhoz, amelyet a földhöz csatlakoztatnak, amikor megnyomják. De ha a kapcsolót nem nyomják meg, akkor a csap nem csatlakozik semmihez, ezt az állapotot úszó csapnak hívják, és ez rossz a mikrovezérlők számára. Tehát ennek elkerülése érdekében vagy felhúzható vagy lehúzható ellenállást használunk, hogy a csapot olyan állapotban tartsuk, amikor lebeg. Az MSP430G2553 mikrovezérlőben az I / O csapok beépített ellenállással rendelkeznek. Ehhez csak annyit kell tennünk, hogy az INPUT helyett az INPUT_PULLUP-ot hívjuk meg a deklaráció során, akárcsak a fenti w.
Most léphetünk a void loop () függvénybe. Bármi is szerepel ebben a függvényben, örökre végrehajtásra kerül. A programunk első lépése annak ellenőrzése, hogy a kapcsolót lenyomják-e, és ha megnyomják, akkor el kell kezdenünk egymás után villogni a LED-eken. A gomb megnyomásának ellenőrzéséhez a következő sort kell használni
if (digitalRead (12) == LOW)
Itt az új funkció a digitalRead () függvény, ez a funkció beolvassa a digitális csap állapotát, és HIGH (1) értéket ad vissza, amikor a csap feszültséget kap, és alacsony LOW (0) értéket ad vissza, amikor a csap földelve van. Hardverünkben a csap csak akkor lesz földelve, ha megnyomjuk a gombot, különben magas lesz, mivel felhúzó ellenállást használtunk. Tehát az if utasítással ellenőrizzük, hogy megnyomták-e a gombot.
Miután megnyomta a gombot, bejutunk a végtelen, míg (1) ciklusba. Itt kezdjük el egymás után villogni a LED-eket. A végtelen, míg a hurok az alábbiakban látható, és bármi, ami a hurok belsejébe van írva, örökké végig fog futni egy szünetig; utasítás használatos.
whiel (1) {}
A végtelen belsejében, miközben ellenőrizzük a második kapcsoló állapotát, amely a 11. érintkezőhöz van csatlakoztatva.
Ha ezt a kapcsolót megnyomjuk, akkor a LED egy adott sorrendben villog, másképp pedig egy másik sorrendben.
if (digitalRead (11) == LOW) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); késés (100); } (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
A LED szekvenciális villogásához ismét használjuk a for ciklust, de ezúttal egy kis, 100 milliszekundumos késleltetést használunk a delay (100) funkció használatával, hogy észrevegyük a LED magasodását. Ahhoz, hogy egyszerre csak egy LED világítson, a hurokhoz egy másikat is használunk az összes LED kikapcsolásához. Tehát bekapcsolunk egy LED-es várakozást egy ideig, majd kikapcsoljuk az összes LED-et, majd növeljük a várakozási idő bekapcsolását és a ciklus folytatódik. De mindez mindaddig megtörténik, amíg a második kapcsolót nem nyomják meg.
Ha megnyomja a második kapcsolót, akkor megváltoztatjuk a sorrendet, a program nagyjából ugyanolyan elvárással fog számolni, mint amilyen sorrendben a LED világít. Az alább látható vonalak próbálják megnézni és kitalálni, hogy mi változott.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); késés (100); } (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Igen, a for ciklus megváltozott. Korábban a LED-et úgy világítottuk, hogy a 2-es számtól kezdve egészen 9-ig világítson. De most a 9-es számtól indulunk, és egészen 2-ig csökkenünk. Így észrevehetjük, hogy a kapcsolót lenyomják-e vagy sem.
Hardver beállítása villogó LED-szekvenciához:
Rendben van az összes elméleti és szoftveres részből. Szerezzünk be néhány összetevőt, és nézzük meg, hogyan néz ki ez a program működés közben. Az áramkör nagyon egyszerű, ezért könnyen építhető kenyérlapra. De azért forrasztottam a LED-et és a kapcsolókat a tökéletes táblán, hogy szép legyen. Az általam forrasztott perf tábla az alábbiakban látható.
Amint láthatja, a LED és a kapcsoló kimeneti csapjait összekötő csapokként vettük ki. Most a női és a női csatlakozókábeleket használtuk a LED-ek és az MSP430 LaunchPad kártya kimenetére történő kapcsoláshoz, az alábbi képen látható módon.
Feltöltés és munka:
Miután végzett a hardverrel, egyszerűen csatlakoztassa az MSP430 alaplapot a számítógépéhez, és nyissa meg az Energia IDE-t, és használja az oldal végén megadott programot. Győződjön meg arról, hogy a megfelelő tábla és COM port van kiválasztva az Energia IDE alkalmazásban, és kattintson a Feltöltés gombra. A programot sikeresen össze kell állítani, és a feltöltés után megjelenik a „Kész feltöltés” felirat.
Most nyomja meg az 1 gombot a táblán, és a LED-nek az alább látható sorrendben kell világítania
A második gombot is nyomva tartva ellenőrizheti, hogy a sorrend megváltozik-e. A projekt teljes működését az alábbi videó mutatja. Ha elégedett az eredményekkel, megpróbálhat néhány módosítást végrehajtani a kódban, például megváltoztathatja a késleltetési időt a sorrend megváltoztatásával stb. Ez segít jobban megismerni és megérteni.
Remélem, megértette az oktatóanyagot, és valami hasznosat megtanult vele. Ha bármilyen problémával szembesült, kérjük, tegye fel a kérdést a megjegyzés rovatban, vagy használja a fórumokat. Találkozzunk egy másik oktatóanyagban, ahol megtanulhatjuk, hogyan kell leolvasni az analóg feszültségeket az MSP30 indítópad segítségével.