Reklama

programovanie arduinoDnes sa vás pokúsim naučiť niečo o Shift Registers. Toto je pomerne dôležitá súčasť programovania Arduino, v podstate preto, že rozširuje počet výstupov, ktoré môžete použiť, výmenou iba za 3 kontrolné kolíky. Môžete tiež dať dohromady daisy-chain shift registry, aby ste získali ešte viac výstupov.

To je významný skok v ťažkostiach z predchádzajúcich tutoriálov, a ja dôrazne odporúčam, aby ste mali naozaj dobré pochopenie predchádzajúcich materiálov (odkazy na konci tohto článku), ako aj porozumenie základy binárneho systému Čo je binárne? [Vysvetlenie technológie]Vzhľadom na to, že binárne údaje sú pre existenciu počítačov absolútne nevyhnutné, zdá sa čudné, že sme sa touto témou nikdy nezaoberali - takže dnes by som si myslel, že poskytnem stručný prehľad toho, čo je binárne ... Čítaj viac ktoré som napísal naposledy.

Čo je to Shift Register?

Výstupný posuvný register, technicky vzatý, prijíma dáta sériovo a vydáva ich paralelne. Z praktického hľadiska to znamená, že môžeme rýchlo poslať veľa výstupných príkazov na čip, oznámiť ich aktivácii a výstupy sa odošlú na príslušné kolíky. Namiesto opakovania každého kolíka jednoducho pošleme požadovaný výstup na všetky kolíky naraz, ako jeden bajt alebo viac informácií.

instagram viewer

Ak vám to pomôže porozumieť, môžete si predstaviť posunový register ako „rad“ digitálnych výstupov, ale môžeme preskočiť obvyklé príkazy digitalWrite a jednoducho nám poslať sériu bitov na ich zapnutie alebo off.

Ako to funguje?

Posuvný register, ktorý budeme používať - ​​74HC595N zahrnutý v štartovacej súprave Oomlout - potrebuje iba 3 kontrolné kolíky. Prvé sú hodiny - nemusíte sa toho príliš obávať, pretože sa jedná o kontrolu sériových knižníc Arduino to - ale hodiny sú v podstate iba elektrické impulzy zapnuté / vypnuté, ktoré nastavujú tempo pre dátový signál.

Západkový kolík sa používa na oznámenie posúvaciemu registru, kedy má zapnúť a vypnúť svoje výstupy podľa bitov, ktoré sme práve poslali - t. J. Ich zaistiť na svojom mieste.

Nakoniec dátový pin je miesto, kde sme poslali aktuálne sériové údaje s bitmi, aby sme určili stav zapnutia / vypnutia výstupov posúvacieho registra.

Celý proces je možné opísať v 4 krokoch:

  1. Nastavte dátový kolík na vysokú alebo nízku hodnotu pre prvý výstupný pin v posúvacom registri.
  2. Pulzujte hodiny na „posunutie“ údajov do registra.
  3. Pokračujte v nastavovaní údajov a pulzujte s hodinami, kým nenastavíte požadovaný stav pre všetky výstupné kolíky.
  4. Impulzom západky aktivujete výstupnú postupnosť.

uskutočnenie

Pre tento projekt potrebujete nasledujúce komponenty:

  • Čip posuvného registra 7HC595N
  • 8 LED diód a vhodných odporov alebo čokoľvek, na čo chcete výstup
  • Obvyklá doska, konektory a základný Arduino

Ak máte štartovaciu súpravu Oomlout, môžete si odtiaľto stiahnuť rozloženie doštičky.

Toto je video zhromaždenia:

Rozloženie dosky:

programovanie arduino

A moja zostavená verzia:

Programovanie Arduino - hra s posuvnými registrami (a.k.a ešte viac LED) zostavená výučba posuvného registra

Pôvodný kód, ktorý nám poskytol Ooolmout, som upravil, ale ak ho chcete skúsiť, môžete si ho tu stiahnuť v plnom znení. Vysvetlenie kódu je zahrnuté, takže skopírujte a vložte celú vec zdola alebo Pastebin aby ste si prečítali vysvetlenie kódu.

/ * * | Výukový program pre zmeny registra, založený na * | Experimentálna súprava Arduino CIRC-05 | * |.: 8 ďalších LED:. (Posunový register 74HC595) * * | Upravil James @ MakeUseOf.com | * * / // Definície špendlíkov. // 7HC595N má tri kolíky. int dáta = 2; // kde posielame bity na riadiace výstupy int clock = 3; // udržuje dáta synchronizované. int západka = 4; // povie posúvaciemu registru, kedy má aktivovať výstupnú sekvenciu void setup () {// nastaví tri ovládacie kolíky na výstup pinMode (dáta, OUTPUT); pinMode (hodiny, VÝSTUP); pinMode (západka, VÝSTUP); Serial.egegin (9600); //, aby sme mohli poslať ladiace správy na sériový monitor. } void loop () {outputBytes (); // náš základný výstup, ktorý zapisuje 8 bitov, aby ukázal, ako funguje posunový register. //outputIntegers(); // odošle celé číslo ako dáta namiesto bajtov, čo sa efektívne počíta binárne. } void outputIntegers () {for (int i = 0; i <256; i ++) {digitalWrite (západka, LOW); Serial.println (i); // Ladenie, odosielanie výstupu na sériový monitor shiftOut (dáta, hodiny, MSBFIRST, i); digitalWrite (západka, VYSOKÁ); oneskorenie (100); }} void outputBytes () {/ * Bajty alebo 8-bitové čísla sú označené písmenom B, za ktorým nasleduje 8 0 alebo 1 s. V tomto prípade to považujte za pole, ktoré použijeme na ovládanie 8 diód LED. Tu som začal bajtovú hodnotu ako 00000001 * / bajt dataValues ​​= B00000001; // zmeňte toto, aby ste upravili počiatočný vzorec / * V cykle for for, začneme potiahnutím západky low, pomocou funkcie shiftOut Arduino na porozprávajte sa o posuvnom registri a pošlite nám náš bajt dátových hodnôt predstavujúcich stav LED, potom potiahnite západku vysoko, aby ste ich uzamkli miesto. Nakoniec posúvame bity o jedno miesto doľava, čo znamená, že ďalšia iterácia zapne ďalšiu LED v sérii. Ak chcete vidieť presnú binárnu hodnotu, ktorá sa odosiela, skontrolujte sériový monitor. * / pre (int i = 0; i <8; i ++) {digitalWrite (západka, LOW); Serial.println (dataValues, BIN); // Ladenie, odosielanie výstupu na sériový monitor shiftOut (dáta, hodiny, MSBFIRST, dataValues); digitalWrite (západka, VYSOKÁ); dataValues ​​= dataValues ​​<< 1; // Posuňte bity o jedno miesto doľava - zmenou na >> upravte oneskorenie smeru (100); } }

Bit-Shifting (funkcia OutputBytes)

V prvom príklade slučky - outputBytes () - kód využíva 8-bitovú sekvenciu (bajt), ktorú potom posúva vľavo pri každej iterácii slučky for. Je dôležité si uvedomiť, že ak posuniete ďalej, ako je možné, bit sa jednoducho stratí.

Posúvanie bitov sa vykonáva pomocou << alebo >> nasledované počtom bitov, o ktoré chcete posunúť.

Pozrite si nasledujúci príklad a uistite sa, že rozumiete tomu, čo sa deje:

byte val = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, tie ostatné bity sme stratili! val = val >> 5 // B00000010. 

Namiesto toho odosielajú celé čísla (funkcia OutputIntegers)

Ak namiesto bajtu odošlete celé číslo do posúvacieho registra, jednoducho ho prevedie na binárnu postupnosť bajtov. V tejto funkcii (odkomentovanie v slučke a odovzdanie, aby sme videli efekt), máme slučku for, ktorá sa počíta od 0 do 255 (najvyššie celé číslo, ktoré môžeme reprezentovať jedným bajtom), a namiesto toho to odošle. V zásade sa počíta binárne, takže sekvencia sa môže zdať trochu náhodná, pokiaľ vaše LED nie sú rozmiestnené v dlhom riadku.

Napríklad, ak si prečítate binárne vysvetlený článok, viete, že číslo 44 bude predstavované ako 00101100, takže v tomto bode v poradí sa rozsvietia LED 3,5,6.

Programovanie Arduino - hranie s posuvnými registrami (a.k.a ešte viac LED) binárne 44

Daisy Chaining viac ako jeden posun Shift

Pozoruhodná vec na Shift Registroch je, že ak dostanú viac ako 8 bitov informácií (alebo akokoľvek sú ich registre veľké), posunú ďalšie ďalšie bity znova. To znamená, že ich môžete spojiť do jednej série, zasunúť jednu dlhú reťaz bitov a nechať ju distribuovať do každého registra osobitne, všetko bez ďalšieho kódovania z vašej strany.

Aj keď tu nebudeme podrobne popisovať postup alebo schémy, ak máte viac ako jeden registr zmien, môžete vyskúšať projekt z oficiálneho webu Arduino tu.

Ďalšie články zo série:

  • Čo je Arduino a čo s tým môžete urobiť Čo je Arduino a čo s tým môžete robiť?Arduino je pozoruhodné malé elektronické zariadenie, ale ak ste ho ešte nikdy nepoužívali, aké presne sú a čo s ním môžete urobiť? Čítaj viac ?
  • Čo je začiatočná súprava Arduino a čo obsahuje? Čo je súčasťou sady Arduino Starter Kit? [MakeUseOf vysvetľuje]Už som tu na MakeUseOf predstavil open-source hardvér Arduino, ale na vytvorenie niečoho z neho a skutočne začatia potrebujete viac ako len samotného Arduina. Arduino "štartovacie súpravy" sú ... Čítaj viac
  • Viac chladiacich komponentov, ktoré môžete kúpiť pomocou súpravy Starter 8 ďalších komponentov pre vaše projekty ArduinoTakže premýšľate o získaní štartovacej súpravy Arduino, ale zaujíma vás, či vám niektoré základné diódy LED a rezistory stačia na to, aby ste sa počas víkendu vyťažili? Pravdepodobne nie. Tu je ďalších 8 ... Čítaj viac
  • Začíname so štartovacou súpravou Arduino? Inštalácia ovládačov a nastavenie karty a portu Začíname so štartovacou súpravou Arduino - Inštalácia ovládačov a nastavenie dosky a portuKúpili ste si štartovaciu súpravu Arduino a možno aj nejaké ďalšie náhodné chladné komponenty - čo teraz? Ako vlastne začnete s programovaním tejto veci Arduino? Ako to nastavíte ... Čítaj viac
  • Fritzing, bezplatný nástroj na kreslenie schém zapojenia Fritzing - konečný nástroj na skicovanie elektronických projektov [Cross Platform]Napriek tomu, že znie ako alcopop, Fritzing je v skutočnosti neuveriteľný kúsok slobodného softvéru, ktorý môžete použiť na vytvorenie schémy obvodov a komponentov pre použitie s elektronickými doskami s rýchlym prototypom, ako je fantastický open-source Arduino ... Čítaj viac
  • Bližší pohľad na štruktúru aplikácie Arduino a príklad programu Blink Prvé kroky s Arduino: Bližší pohľad na dosku a štruktúru programuNaposledy som vás nechal nastaviť Arduino na prácu s Mac alebo Windows a odovzdať jednoduchú testovaciu aplikáciu, ktorá blikala zabudovanou LED diódou. Dnes ti vysvetlím kód ... Čítaj viac
  • Projekt svetiel stromov Arduino Xmas Projekt Arduino: Ako vyrobiť honosné ozdoby na vianočné osvetlenieToto je ďalšia časť našej série výučby Arduino. Tentoraz sa budeme učiť a používať polia na vytvorenie malej ozdoby na vianočný stromček s rôznymi blikajúcimi sekvenciami. To by bolo ... Čítaj viac (AKA učenie o poliach)
  • Čo je binárne? Čo je binárne? [Vysvetlenie technológie]Vzhľadom na to, že binárne údaje sú pre existenciu počítačov absolútne nevyhnutné, zdá sa čudné, že sme sa touto témou nikdy nezaoberali - takže dnes by som si myslel, že poskytnem stručný prehľad toho, čo je binárne ... Čítaj viac

To je, pokiaľ pôjdeme dnes s registrami smeny, pretože si myslím, že sme toho veľa pokryli. Ako vždy, odporúčame vám, aby ste si s kódom hrali a upravovali ho, a neváhajte sa opýtať na akékoľvek otázky, ktoré by ste mohli mať v komentároch, alebo dokonca zdieľajte odkaz na svoj úžasný projekt založený na registrácii smeny.

James má bakalárske štúdium v ​​oblasti umelej inteligencie a je držiteľom certifikátu CompTIA A + a Network +. Je popredným vývojárom MakeUseOf a trávi svoj voľný čas hraním VR paintballu a spoločenských hier. Staval počítače od malička.