reklama
Dnes se vás pokusím trochu naučit o Shift Registers. Jedná se o docela důležitou součást programování Arduino, v podstatě proto, že rozšiřují počet výstupů, které můžete použít, výměnou pouze za 3 ovládací kolíky. Můžete také daisy-chain shift registers dohromady, abyste získali ještě více výstupů.
To je významný skok v obtížích z předchozích tutoriálů, a já důrazně doporučuji, abyste měli opravdu dobré porozumění předchozím materiálům (odkazy na konci tohoto článku), jakož i porozumění základy binární Co je binární? [Vysvětlená technologie]Vzhledem k tomu, že binární je tak absolutně zásadní pro existenci počítačů, zdá se zvláštní, že jsme se s tématem nikdy nezabývali - takže dnes bych si myslel, že dám krátký přehled toho, co binární ... Přečtěte si více které jsem napsal naposledy.
Co je to Shift Register?
Výstupní posuvný registr, technicky vzato, přijímá data sériově a vydává je paralelně. V praxi to znamená, že můžeme rychle poslat spoustu výstupních příkazů na čip, řekněte mu, aby se aktivoval, a výstupy budou odeslány na příslušné piny. Místo opakování každého kolíku jednoduše pošleme požadovaný výstup na všechny kolíky najednou, jako jeden bajt nebo více informací.
Pokud vám to pomůže pochopit, můžete přemýšlet o registru posuvů jako o „sadě“ digitálních výstupů, ale můžeme přeskočit obvyklé příkazy digitalWrite a jednoduše odeslat řadu bitů, abychom je zapnuli nebo vypnuto.
Jak to funguje?
Posuvný registr, který budeme používat - 74HC595N zahrnutý v sadě startérů Oomlout - potřebuje pouze 3 kontrolní kolíky. První jsou hodiny - nemusíte se toho příliš obávat, protože ovládání Arduino sériových knihoven to - ale hodiny jsou v podstatě pouze elektrickým impulsem zap / vyp, který nastavuje tempo pro datový signál.
Západkový kolík se používá k tomu, aby posoudil posuvný registr, kdy by měl zapínat a vypínat své výstupy podle bitů, které jsme právě poslali - tj. Jejich západkou na místo.
Nakonec datový pin je místo, kde jsme poslali skutečná sériová data s bity, abychom určili stav zapnutí / vypnutí výstupů posuvného registru.
Celý proces lze popsat ve 4 krocích:
- Nastavte datový pin na první nebo vyšší výstupní pin v posuvném registru na vysokou nebo nízkou hodnotu.
- Pulzujte hodiny a „posuňte“ data do registru.
- Pokračujte v nastavování dat a pulzujte hodiny, dokud nenastavíte požadovaný stav pro všechny výstupní kolíky.
- Impulzem západky aktivujete výstupní sekvenci.
Implementace
Pro tento projekt potřebujete následující komponenty:
- Čip posuvného registru 7HC595N
- 8 LED a příslušných odporů, nebo cokoli, na co chcete výstup
- Obvyklá prkénko, konektory a základní Arduino
Pokud máte startovací sadu Oomlout, můžete si zde stáhnout rozložení prkénku.
Zde je video sestavy:
Rozložení desky:
A moje sestavená verze:
Původní kód, který nám poskytl Ooolmout, jsem upravil, ale pokud to chcete zkusit, můžete si ho stáhnout zde. Vysvětlení kódu je zahrnuto, takže zkopírujte a vložte celou věc zdola nebo pastebin číst vysvětlení kódu.
/ * * | Výukový program Shift Register, založený na | * | Experimentální souprava Arduino CIRC-05 | * |.: 8 dalších LED:. (Shift Register 74HC595) * * | Upraveno Jamesem @ MakeUseOf.com | * * / // Definice pinů. // 7HC595N má tři kolíky. int data = 2; // kde posíláme bity do řídících výstupů int clock = 3; // udržuje data synchronizovaná. int západka = 4; // řekne posuvnému registru, kdy má aktivovat výstupní sekvenci void setup () {// nastaví tři ovládací kolíky na výstup pinMode (data, OUTPUT); pinMode (hodiny, VÝSTUP); pinMode (západka, VÝSTUP); Serial.egegin (9600); // takže můžeme posílat ladicí zprávy na sériový monitor. } void loop () {outputBytes (); // náš základní výstup, který zapisuje 8 bitů, aby ukázal, jak funguje posuvný registr. //outputIntegers(); // odešle celočíselnou hodnotu jako data namísto bajtů, což účinně spočítá binární. } void outputIntegers () {for (int i = 0; i <256; i ++) {digitalWrite (latch, LOW); Serial.println (i); // Ladění, odesílání výstupu na sériový monitor shiftOut (data, hodiny, MSBFIRST, i); digitalWrite (západka, VYSOKÁ); zpoždění (100); }} void outputBytes () {/ * Bajty nebo 8 bitů jsou reprezentovány B následovaným 8 0 nebo 1 s. V tomto případě to považujte za pole, které použijeme k ovládání 8 LED. Zde jsem začal bajtovou hodnotu jako 00000001 * / byte dataValues = B00000001; // změňte toto pro nastavení počátečního vzoru / * Ve smyčce for začneme zatlačením západky doleva, pomocí funkce shiftOut Arduino na promluvte si s posuvným registrem, posílejte jej náš byte dataValues představující stav LED diod a poté zatáhněte za západku vysoko, abyste je zamkli místo. Nakonec posuneme bity o jedno místo doleva, což znamená, že další iterace zapne další LED v řadě. Chcete-li vidět přesnou binární hodnotu odesílanou, zkontrolujte sériový monitor. * / pro (int i = 0; i <8; i ++) {digitalWrite (západka, LOW); Serial.println (dataValues, BIN); // Ladění, odesílání výstupu na sériový monitor shiftOut (data, hodiny, MSBFIRST, dataValues); digitalWrite (západka, VYSOKÁ); dataValues = dataValues << 1; // Posuňte bity o jedno místo doleva - změňte na >> pro nastavení zpoždění směru (100); } }
Bit-Shifting (funkce OutputBytes)
V příkladu s první smyčkou - outputBytes () - kód používá 8bitovou sekvenci (bajt), kterou posune doleva každou iteraci smyčky for. Je důležité si uvědomit, že pokud posunete dále, než je možné, bit se jednoduše ztratí.
Posun bitů se provádí pomocí << nebo >> následovaným počtem bitů, o které chcete posunout.
Podívejte se na následující příklad a ujistěte se, že rozumíte tomu, co se děje:
byte val = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, ztratili jsme ty ostatní bity! val = val >> 5 // B00000010.
Místo toho odesílání celých čísel (funkce OutputIntegers)
Pokud odešlete celé číslo do posuvného registru místo bajtu, jednoduše jej převede na binární bajtovou sekvenci. V této funkci (uncomment ve smyčce a upload vidět efekt), máme smyčku for, která se počítá od 0-255 (nejvyšší celé číslo, které můžeme reprezentovat s jedním bajtem), a odešle to místo toho. V zásadě se počítá binárně, takže sekvence se může zdát trochu náhodná, pokud vaše LED diody nejsou rozloženy v dlouhé řadě.
Pokud například přečtete binární vysvětlený článek, budete vědět, že číslo 44 bude představováno jako 00101100, takže v tomto bodě sekvence se rozsvítí LED 3,5,6.
Daisy Chaining více než jeden posun Shift
Pozoruhodná věc na Shift Registers je, že pokud jim bude dáno více než 8 bitů informací (nebo jakkoli je jejich registr velký), posunou další další bity znovu ven. To znamená, že je můžete spojit do řady, zatlačit jeden dlouhý řetězec bitů a nechat jej distribuovat do každého registru zvlášť, to vše bez dalšího kódování na vaší straně.
Přestože zde nebudeme podrobně popisovat postup nebo schémata, pokud máte více než jeden směnový registr, můžete si vyzkoušet projekt z oficiálního webu Arduino zde.
Další články v seriálu:
- Co je Arduino a co s tím můžete dělat Co je Arduino a co s tím můžete dělat?Arduino je pozoruhodné malé elektronické zařízení, ale pokud jste ho nikdy předtím nepoužívali, jaké přesně jsou a co s ním můžete dělat? Přečtěte si více ?
- Co je Arduino Starter Kit a co obsahuje? Co je součástí sady Arduino Starter Kit? [MakeUseOf vysvětluje]Předtím jsem zde na MakeUseOf představil open-source hardware Arduino, ale potřebujete něco víc než jen samotného Arduina, abyste z něj něco vytvořili a mohli začít. Arduino "startovací sady" jsou ... Přečtěte si více
- Více skvělých součástí ke koupi se sadou startérů 8 dalších skvělých komponentů pro vaše projekty ArduinoTakže přemýšlíte o získání startovací soupravy Arduino, ale zajímá vás, jestli vám některé základní LED diody a rezistory budou stačit na to, abyste se o víkendu starali? Asi ne. Zde je dalších 8 ... Přečtěte si více
- Začínáme se sadou Arduino Starter Kit? Instalace ovladačů a nastavení desky a portu Začínáme se sadou Arduino Starter Kit - Instalace ovladačů a nastavení desky a portuKoupili jste si tedy startovací soupravu Arduino a možná i nějaké další chladné komponenty - co teď? Jak vlastně začnete s programováním této věci Arduino? Jak to nastavíte ... Přečtěte si více
- Fritzing, bezplatný nástroj pro kreslení schémat zapojení Fritzing - konečný nástroj pro skicování elektronických projektů [Cross Platform]Přestože Fritzing zní jako alcopop, je ve skutečnosti neuvěřitelný kousek svobodného softwaru, který můžete použít k vytvoření schémata obvodů a součástek pro použití s deskami elektroniky pro rychlé prototypování, jako je fantastický open-source Arduino ... Přečtěte si více
- Bližší pohled na strukturu aplikace Arduino a příklad programu Blink První kroky s Arduino: Bližší pohled na desku s obvody a strukturu programuNaposledy jsem vás nechal nastavit Arduino pro práci s Mac nebo Windows a nahrál jednoduchou testovací aplikaci, která blikala na palubní LED. Dnes budu vysvětlovat kód ... Přečtěte si více
- Projekt světla stromů Arduino Xmas Projekt Arduino: Jak vyrobit honosné ozdoby na vánoční osvětleníToto je další část naší výuky Arduino série a tentokrát se budeme učit a používat Arrays, abychom vytvořili malou ozdobu vánočního stromu s různými blikajícími sekvencemi. To by bylo ... Přečtěte si více (AKA učení o polích)
- Co je Binary? Co je binární? [Vysvětlená technologie]Vzhledem k tomu, že binární je tak absolutně zásadní pro existenci počítačů, zdá se zvláštní, že jsme se s tématem nikdy nezabývali - takže dnes bych si myslel, že dám krátký přehled toho, co binární ... Přečtěte si více
To je, pokud půjdeme dnes s posuvnými registry, protože si myslím, že jsme toho hodně pokryli. Jako vždy, doporučuji vám, abyste si s kódem hráli a upravovali jej, a klidně se můžete zeptat na jakékoli otázky, které byste mohli mít v komentářích, nebo dokonce sdílet odkaz na svůj úžasný projekt založený na posuvném registru.
James má bakalářský titul v oboru umělé inteligence a je držitelem certifikátu CompTIA A + a Network +. Je hlavním vývojářem MakeUseOf a tráví svůj volný čas hraním VR paintballu a deskových her. Staví počítače od dětství.