
William Charles
0
4436
481
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 pochopení základů binárního Co je binární? [Vysvětlená technologie] Co je binární? [Technologie vysvětlena] 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í ... 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 si představit posunový registr jako „řadu“ 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 vypnuli.
Jak to funguje?
Posuvný registr, který budeme používat - 74HC595N zahrnutý v sadě startérů Oomlout - potřebuje pouze 3 kontrolní kolíky. První z nich jsou hodiny - nemusíte se toho příliš obávat, protože to ovládají sériové knihovny Arduino - ale hodiny jsou v podstatě pouze elektrickým impulsem zapnuto / vypnuto, které nastavuje tempo pro datový signál..
Západkový kolík se používá k tomu, aby posuvnému registru oznámil, kdy má zapínat a vypínat své výstupy podle bitů, které jsme jej 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 s hodinami, 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 rozvržení prkénku.
Zde je video sestavy:
Rozložení desky:
A moje sestavená verze:
Původní kód poskytnutý Ooolmoutem 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, abyste si přečetli vysvětlení kódu..
/ * ------------------------------------------------ --------- * | Výukový program Shift Register, založený na | * | Experimentální souprava Arduino CIRC-05 | * | .: 8 Více LED:. (Shift Register 74HC595) * ------------------------------------------------- -------- * | Upraveno Jamesem @ MakeUseOf.com | * ------------------------------------------------- -------- * / // Definice pinů // 7HC595N má tři piny int data = 2; // kde posíláme bity do řídících výstupů int clock = 3; // udržuje data v synchronizaci int latch = 4; // řekne posuvnému registru, kdy má aktivovat výstupní sekvenci void setup () // nastavit 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); // Debug, sending output to the serial monitor shiftOut(data, clock, MSBFIRST, i); digitalWrite(latch, HIGH); delay(100); void outputBytes() /* Bytes, or 8-bits, are represented by a B followed by 8 0 or 1s. In this instance, consider this to be like an array that we'll use to control the 8 LEDs. Here I've started the byte value as 00000001 */ byte dataValues = B00000001; // change this to adjust the starting pattern /* In the for loop, we begin by pulling the latch low, using the shiftOut Arduino function to talk to the shift register, sending it our byte of dataValues representing the state of the LEDs then pull the latch high to lock those into place. Finally, we shift the bits one place to the left, meaning the next iteration will turn on the next LED in the series. To see the exact binary value being sent, check the serial monitor. */ for (int i=0;i<8;i++) digitalWrite(latch, LOW); Serial.println(dataValues, BIN); // Debug, sending output to the serial monitor shiftOut(data, clock, MSBFIRST, dataValues); digitalWrite(latch, HIGH); dataValues = dataValues <> 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 po každé 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í <>, 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 <> 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 si 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ě.
I když zde nebudeme podrobně popisovat proces nebo schémata, pokud máte více než jeden směnový registr, můžete zkusit projekt z oficiálního webu Arduino zde.
Další články v seriálu:
- Co je Arduino a co s ním můžete dělat Co je to Arduino a co s ním můžete dělat? Co je Arduino a co s ním můžete dělat? Arduino je pozoruhodné malé elektronické zařízení, ale pokud jste ho nikdy předtím nepoužívali, tak co přesně jsou a co s ním můžete dělat? ?
- Co je Arduino Starter Kit a co obsahuje? Co je součástí sady Arduino Starter Kit? [MakeUseOf vysvětluje] Co je zahrnuto v Arduino Starter Kit? [MakeUseOf vysvětluje] Předtím jsem zde na MakeUseOf představil open-source hardware Arduino, ale budete potřebovat více než jen samotného Arduina, abyste z něj něco vytvořili a abyste mohli začít. Arduino „startovací sady“ jsou…
- Více cool komponentů ke koupi se startovací sadou 8 Více cool komponentů pro vaše projekty Arduino 8 více cool komponentů pro vaše Arduino projekty Takže uvažujete o získání startovací sady Arduino, ale přemýšlíte, jestli budou nějaké základní LED diody a rezistory natolik, aby vás zaměstnával celý víkend? Asi ne. Zde je dalších 8…
- 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 portu Začínáme se sadou Arduino Starter Kit - Instalace ovladačů a nastavení desky a portu Takže jste si zakoupili sami Arduino startovací sada a možná nějaké další náhodné cool komponenty - co teď? Jak vlastně začnete s programováním této věci Arduino? Jak to nastavíte ...
- Fritzing, bezplatný nástroj pro kreslení schémat zapojení Fritzing - konečný nástroj pro skicování elektronických projektů [Cross Platform] Fritzing - konečný nástroj pro skicování elektronických projektů [Cross Platform] Fritzing je ve skutečnosti neuvěřitelný kousek bezplatný software, který můžete použít k vytváření schémat obvodů a součástí pro použití s elektronickými deskami s rychle se vyvíjejícími prototypy, jako je fantastický open-source Arduino…
- Bližší pohled na strukturu aplikace Arduino a příklad Blink Program První kroky s Arduino: Bližší pohled na obvodovou desku & Struktura programu První kroky s Arduino: Bližší pohled na obvodovou desku a strukturu O programu Naposledy 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 ...
- Projekt Arduino Xmas tree lights Projekt Arduino: Jak vyrobit honosné ozdoby na vánoční osvětlení Arduino Project: Jak vyrobit honosné ozdoby na vánoční osvětlení Toto je další část naší řady učení Arduino a tentokrát se budeme učit a používat pole vyrobit malou ozdobu vánočního stromu s různými blikajícími sekvencemi. To by bylo… (AKA učení o polích)
- Co je Binary? Co je binární? [Vysvětlená technologie] Co je binární? [Technologie vysvětlena] 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í…
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 zahráli a upravovali kód, 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 registru posuvníků.