- Potřebný materiál:
- Kruhový diagram:
- Vysvětlení programování:
- Nastavení hardwaru pro sekvenci blikajících LED:
- Nahrávání a práce:
Toto je druhý tutoriál sekvence tutoriálu, ve kterém se učíme MSP430G2 LaunchPad od Texas Instruments pomocí IDE Energia. V posledním tutoriálu Blinky LED jsme představili své vlastní vývojové desce LaunchPad a Energia IDE, také jsme nahráli náš první program, který má v pravidelných intervalech blikat palubní LED.
V tomto tutoriálu se naučíme, jak používat možnost Digital Read a Digital Write ke čtení stavu vstupního zařízení, jako je přepínač, a ovládání více výstupů, jako jsou LED. Na konci tohoto tutoriálu byste se naučili pracovat s digitálními vstupy a výstupy, které lze použít k propojení mnoha digitálních senzorů, jako je IR senzor, PIR senzor atd., A také k zapnutí nebo vypnutí výstupů, jako je LED, bzučák atd. Zní to zajímavě že jo!!? Začněme.
Potřebný materiál:
- MSP430G2 LaunchPad
- LED libovolné barvy - 8
- Přepínač - 2
- 1k rezistor - 8
- Připojovací vodiče
Kruhový diagram:
V našem předchozím tutoriálu jsme si všimli, že samotná odpalovací plošina je dodávána se dvěma LED a přepínačem na desce. Ale v tomto tutoriálu budeme potřebovat víc než to, protože při stisknutí tlačítka plánujeme postupně rozsvítit osm LED světel. Sekvenci také změníme, když stiskneme jiné tlačítko, aby to bylo zajímavé. Musíme tedy postavit obvod s 8 LED světly a dvěma spínači, kompletní schéma zapojení najdete níže.
Zde je 8 LED výstupů a dva spínače jsou vstupy. Můžeme je připojit k libovolnému I / O kolíku na desce, ale připojil jsem LRD z kolíku P1.0 k P2.1 a přepnul 1 a 2 na kolíky P2.4 a P2.3, jak je uvedeno výše.
Všechny katodové kolíky LED jsou spojeny se zemí a anodový kolík je připojen k I / O kolíkům přes odpor. Tento rezistor se nazývá rezistor omezující proud, tento rezistor není povinný pro MSP430, protože maximální proud, který může I / O pin napájet, je pouze 6 mA a napětí na pinu je pouze 3,6 V. Je však dobrým zvykem je používat. Když některý z těchto digitálních kolíků stoupne vysoko, rozsvítí se příslušná LED. Pokud si můžete vzpomenout na poslední LED program výuky, pak si budete pamatovat, že digitalWrite (LED_pin_name, HIGH) rozsvítí LED a digitalWrite (LED_pin_name, LOW) rozsvítí LED.
Spínače jsou vstupním zařízením, jeden konec spínače je připojen k uzemňovací svorce a druhý k digitálním pinům P2.3 a P2.4. To znamená, že kdykoli stiskneme spínač, I / O pin (2.3 nebo 2.4) bude uzemněn a bude ponechán volný, pokud není stisknuto tlačítko. Podívejme se, jak můžeme toto uspořádání použít při programování.
Vysvětlení programování:
Program musí být zapsán tak, aby při stisknutí spínače 1 postupně sledoval 8 LED diod, a poté, když je stisknut spínač 2, je třeba změnit pořadí. Kompletní program a ukázka Video lze nalézt v dolní části této stránky. Dále vysvětlím program po řádku, abyste tomu snadno porozuměli.
Jako vždy bychom měli začít s funkcí void setup (), uvnitř které bychom deklarovali piny, které používáme, jsou vstupní nebo výstupní piny. V našem programu je na výstupu 8 LED kolíků a 2 spínače jsou vstupy. Těchto 8 LED je připojeno od P1.0 k P2.1, což je pin číslo 2 až 9 na desce. Poté jsou přepínače připojeny ke kolíku P2.3 a ke kolíku 2.4, což je kolík číslo 11 a 12. Takže jsme deklarovali následující v nastavení void ()
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); }
Jak víme, funkce pinMode () deklaruje pin jako výstup nebo vstup a díky funkci digitalWrite () je vysoká (ON) nebo nízká (OFF). K vytvoření této deklarace jsme použili smyčku for, abychom snížili počet řádků. Proměnná „i“ se ve smyčce for zvýší od 2 do 9 a pro každý přírůstek se provede funkce uvnitř. Další věc, která by vás mohla zmást, je pojem „ INPUT_PULLUP “. Pin lze deklarovat jako vstup pouhým voláním funkce pinMode (Pin_name, INPUT), ale zde jsme místo INPUT použili INPUT_PULLUP a oba mají znatelnou změnu.
Když používáme jakékoli piny mikrokontroléru, měl by být pin buď připojen k nízkému, nebo k vysokému. V tomto případě jsou kolíky 11 a 12 připojeny ke spínači, který bude po stisknutí připojen k zemi. Pokud však spínač není stisknutý, kolík není připojen k ničemu, tento stav se nazývá plovoucí kolík a je to špatné pro mikrokontroléry. Abychom tomu zabránili, použijeme buď pull-up nebo pull-down rezistor k udržení kolíku ve stavu, kdy se dostane do plovoucího stavu. V mikrokontroléru MSP430G2553 mají I / O piny zabudovaný pull-up rezistor. Chcete-li použít toto vše, co musíme udělat, je zavolat INPUT_PULLUP namísto INPUT během deklarace, stejně jako jsme to udělali výše.
Nyní můžeme vstoupit do funkce void loop () . Cokoli je napsáno v této funkci, bude provedeno navždy. Prvním krokem v našem programu je zkontrolovat, zda je stisknutý spínač, a pokud je stisknuto, měli bychom postupně blikat LED. Ke kontrole, zda je tlačítko stisknuto, se používá následující řádek
if (digitalRead (12) == LOW)
Tady je novou funkcí funkce digitalRead () , tato funkce načte stav digitálního kolíku a vrátí HIGH (1), když kolík dostane nějaké napětí, a vrátí nízkou LOW (0), když je kolík uzemněn. V našem hardwaru bude kolík uzemněn, pouze když stiskneme tlačítko, jinak bude vysoký, protože jsme použili pull-up rezistor. Pomocí příkazu if tedy zkontrolujeme, zda bylo stisknuto tlačítko.
Jakmile je tlačítko stisknuto, dostaneme se do nekonečné while (1) smyčky. To je místo, kde začneme postupně blikat LED. Nekonečný cyklus while je uvedeno níže, a vše, co je napsáno uvnitř smyčky bude probíhat navždy do přestávky; je použito prohlášení.
whiel (1) {}
Uvnitř nekonečna, zatímco kontrolujeme stav druhého spínače, který je připojen ke kolíku 11.
Pokud je tento spínač stisknutý, blikáme LED v jedné konkrétní sekvenci, jinak ji blikáme v jiné sekvenci.
if (digitalRead (11) == LOW) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); zpoždění (100); } for (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
K postupnému blikání LED znovu použijeme smyčku for , ale tentokrát použijeme malé zpoždění 100 milisekund pomocí funkce delay (100) , abychom si všimli, že LED dioda stoupá. Aby se rozsvítila pouze jedna LED dioda, vypneme také všechny ostatní pomocí smyčky for . Takže zapneme led, počkáme nějakou dobu a potom vypneme všechny LED, potom zvýšíme počet, zapneme LED, počkáme nějakou dobu a cyklus pokračuje. Ale to vše se stane, dokud nestisknete druhý spínač.
Pokud je stisknut druhý spínač , změníme sekvenci, program bude víceméně stejný, jaký očekáváme u sekvence, ve které je LED zapnutá. Řádky jsou zobrazeny níže, zkuste se podívat a zjistit, co se změnilo.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); zpoždění (100); } for (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Ano, smyčka for byla změněna. Dříve jsme LED rozsvítili od čísla 2 až po 9. Nyní ale začneme od čísla 9 a snižujeme úplně dolů na 2. Tímto způsobem si můžeme všimnout, zda je spínač stisknutý nebo ne.
Nastavení hardwaru pro sekvenci blikajících LED:
Dobře, všechny části teorie a softwaru. Pojďme si pořídit několik komponent a podívejme se, jak tento program vypadá v akci. Obvod je velmi jednoduchý, a proto jej lze snadno postavit na prkénku. Ale já jsem připájel LED a přepínače na desce perf, jen aby to vypadalo úhledně. Deska perf, kterou jsem pájel, je zobrazena níže.
Jak vidíte, máme výstupní piny LED a spínače vyřazené jako piny konektoru. Nyní jsme pro připojení LED diod a přepínačů k desce MSP430 LaunchPad použili vodiče konektoru typu female to female, jak je znázorněno na obrázku níže.
Nahrávání a práce:
Až hardware dokončíte, stačí připojit desku MSP430 k počítači a otevřít IDE Energia a použít program uvedený na konci této stránky. Ujistěte se, že je v Energia IDE vybrána pravá deska a port COM a klikněte na tlačítko Nahrát. Program by se měl úspěšně zkompilovat a po nahrání se zobrazí „Hotovo nahrávání“.
Nyní stiskněte tlačítko 1 na desce a LED by se měla rozsvítit postupně, jak je znázorněno níže
Můžete také podržet druhé tlačítko a zkontrolovat, zda se pořadí mění. Kompletní fungování projektu je uvedeno ve videu níže. Pokud jste s výsledky spokojeni, můžete zkusit provést některé změny v kódu, jako je změna doby zpoždění, změna sekvence atd. To vám pomůže lépe se učit a porozumět.
Doufám, že jste pochopili výukový program a naučili se s ním něco užitečného. Pokud jste se setkali s jakýmkoli problémem, neváhejte a pošlete dotaz v sekci komentářů nebo použijte fóra. Pojďme se setkat v dalším výukovém programu, kde se naučíme číst analogová napětí pomocí naší startovací podložky MSP30.