Hirdetés
Ma megpróbállak egy kicsit megtanítani neked a Shift Nyilvántartásokat. Ez az Arduino programozás meglehetősen fontos része, alapvetően azért, mert kibővíti a használható kimenetek számát, csak 3 vezérlőcsap ellenében. Szintén daisy-lánc-váltás regisztereket készíthet, hogy még több kimenetet érjen el.
Ez azonban jelentős nehézséget okoz a korábbi oktatóprogramokhoz képest, és határozottan azt javaslom, hogy van egy nagyon jó megértés az előző anyagról (linkek a cikk végén), valamint a megértés az a bináris alapok Mi a bináris? [Technológia magyarázata]Mivel a bináris annyira alapvető fontosságú a számítógépek létezéséhez, furcsanak tűnik, hogy még soha nem foglalkoztunk a témával - tehát ma azt gondoltam, hogy röviden áttekintjük, mi a bináris ... Olvass tovább amit utoljára írtam.
Mi az a Shift regisztráció?
A kimeneti eltolódási regiszter műszaki szempontból soros formában fogad adatokat és párhuzamosan adja ki azokat. Gyakorlatilag ez azt jelenti, hogy gyorsan egy csomó kimeneti parancsot küldhetünk a chipre, mondhatjuk, hogy aktiválódik, és a kimeneteket a megfelelő csapokra küldjük. Ahelyett, hogy minden tűn át iterálnánk, egyszerűen elküldjük a szükséges kimenetet az összes tűre egyszerre, egyetlen bájt vagy több információként.
Ha ez segít megérteni, akkor gondolhatja a műszaknyilvántartást, mint a digitális kimenetek tömbjét, de kihagyhatjuk a szokásos digitalWrite parancsokat, és egyszerűen elküldhetünk egy bitesort, hogy bekapcsoljuk őket vagy ki.
Hogyan működik?
Az általunk használt műszaknyilvántartásra - az Oomlout indítókészlethez tartozó 74HC595N-re - csak 3 vezérlőcsapra van szükség. Az első egy óra - nem kell annyira aggódnia, mert az Arduino soros könyvtárak vezérlik ez - de az óra alapvetően csak egy be- és kikapcsolt elektromos impulzus, amely beállítja az adatjel ütemét.
A reteszelőcsapot arra használják, hogy megmondja az eltolódási regiszternek, mikor kell kimeneteit be- és kikapcsolni az éppen elküldött biteknek megfelelően - azaz rögzíteni őket a helyükre.
Végül, az adatcsapra oda küldtük a tényleges soros adatokat a bittel, hogy meghatározzuk a műszaknyilvántartó kimeneteinek be / ki állapotát.
Az egész folyamat 4 lépésben írható le:
- Állítsa az adatcsapot magasra vagy alacsonyra az első kimeneti tűnél a műszaknyilvántartón.
- Húzza az órát az adatok „áthelyezéséhez” a regiszterbe.
- Folytassa az adatok beállítását és az óra pulzálását mindaddig, amíg nem állítja be az összes kimeneti érintkezőhöz a szükséges állapotot.
- Húzza meg a reteszelőtűt a kimeneti sorozat aktiválásához.
Végrehajtás
A következő összetevőkre van szüksége a projekthez:
- 7HC595N műszak regisztrációs chip
- 8 LED és megfelelő ellenállások, vagy bármi más, ahonnan kimenet érkezik
- A szokásos kenyérlemez, csatlakozók és egy alapvető Arduino
Ha rendelkezik az Oomlout kezdőkészlettel, itt letöltheti a kenyérlemez elrendezését.
Itt van az összeszerelési videó:
A táblák elrendezése:

És az összeszerelt verzióm:

Módosítottam az Ooolmout által biztosított eredeti kódot, de ha inkább kipróbálni szeretné, akkor itt teljes mértékben letöltheti. A kód magyarázatát tartalmazza, tehát másolja és illessze be az egészet alulról vagy az aljára pastebin elolvasni a kód magyarázatát.
/ * * | A Shift regisztráció bemutatója | | alapján * | Arduino kísérleti készlet CIRC-05 | * |: 8 további LED:. (74HC595 váltási nyilvántartás) * * | James @ MakeUseOf.com által módosítva * * / // Pin meghatározások. // A 7HC595N három érintkezővel rendelkezik. int adatok = 2; // ahol elküldjük a biteket a kimenetek vezérlésére int óra = 3; // az adatokat szinkronban tartja. int retesz = 4; // megmondja a műszak regisztrálójának, mikor kell aktiválni a kimeneti sorozat érvénytelen beállítását () {// állítsa be a három vezérlőcsapot a pinMode (adat, OUTPUT) kimenetre; pinMode (óra, OUTPUT); pinMode (retesz, OUTPUT); Serial.begin (9600); // így hibakeresési üzeneteket küldhetünk a soros monitorra. } void loop () {outputBytes (); // alapkimenetünk, amely 8 bites ír, hogy megmutassa, hogyan működik a műszak-regiszter. //outputIntegers(); // egész számot küld adatként bájt helyett, ténylegesen binárisan számolva. } void outputIntegers () {mert (int i = 0; i <256; i ++) {digitalWrite (retesz, LOW); Serial.println (i); // Hibakeresés, kimenet küldése a soros monitor shiftOut-hoz (adatok, óra, MSBFIRST, i); digitalWrite (retesz, HIGH); késleltetés (100); }} void outputBytes () {/ * bájtot vagy 8 bitet B jelöl, amelyet 8 0 vagy 1 s követ. Ebben az esetben tekintsük ezt olyan tömbnek, amelyet a 8 LED vezérlésére használunk. Itt kezdtem el a bájt értékét mint 00000001 * / byte dataValues = B00000001; // módosítsa ezt a kezdőmintázat beállításához / * A for hurokban a reteszt alacsonyan húzzuk, a shiftOut Arduino funkció segítségével beszéljen a műszaknyilvántartóval, elküldve a LED-ek állapotát ábrázoló dataVálta-bájtunkat, majd húzza a reteszt magasra, hogy rögzítse azokat hely. Végül a biteket egy helyről balra toljuk, vagyis a következő iteráció bekapcsolja a sorozat következő LED-jét. A pontos bináris érték megtekintéséhez ellenőrizze a soros monitort. * / for (int i = 0; i <8; i ++) {digitalWrite (retesz, LOW); Serial.println (dataValues, BIN); // Hibakeresés, kimenet küldése a soros monitor shiftOut-hoz (adatok, óra, MSBFIRST, dataValues); digitalWrite (retesz, HIGH); dataValues = dataValues << 1; // Mozgassa a biteket egy helyen balra - állítsa át >> -re, hogy beállítsa az irány késleltetést (100); } }
Bit-eltolás (OutputBytes függvény)
Az első hurok példában - outputBytes () - a kód egy 8 bites szekvenciát (bájt) használ, amelyet azután elmozdít a bal hurok minden egyes iterációjakor. Fontos megjegyezni, hogy ha a lehetségesnél tovább tolódik el, a darab egyszerűen elveszik.
A bit-eltolás a << vagy >> gombbal történik, amelyet az elmozgatni kívánt bitszám követ.
Nézze meg a következő példát, és győződjön meg arról, hogy megérti, mi történik:
byte val = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, elvesztettük ezeket a többi bitet! val = val >> 5 // B00000010.
Egész számok küldése helyett (OutputIntegers függvény)
Ha egy egész számot küld a váltóregiszterbe bájt helyett, akkor az egyszerűen átalakítja a számot bináris bájt sorozatba. Ebben a függvényben (a hurokban történő megjegyzés nélküli feltöltés és a hatás feltöltése érdekében) van egy for ciklus, amely 0-255-ig számol (a legmagasabb egész szám, amelyet egy bájtmal ábrázolhatunk), és ehelyett elküldi. Alapvetően binárisan számít, tehát a sorrend kissé véletlenszerűnek tűnhet, hacsak a LED-eket hosszú sorban nem helyezik el.
Például, ha elolvassa a magyarázott bináris cikket, akkor tudni fogja, hogy a 44 szám 00101100 lesz, tehát a 3,5,6 LED-ek a sorozat ezen pontján világítanak.

Daisy egynél több műszak regisztrálása
A figyelemre méltó dolog a Shift Regisztereknél az, hogy ha több mint 8 bites információt kapnak (vagy bármennyire nagy a nyilvántartásuk is), akkor a többi kiegészítő bitet ismét kihozzák. Ez azt jelenti, hogy összekapcsolhatja egy sorozatot egymással, behúzhat egy hosszú bitláncot, és eloszthatja az egyes regiszterekbe külön-külön, mindegyik további kódolás nélkül.
Noha itt nem részletezzük a folyamatot vagy a vázlatokat, ha egynél több műszaknyilvántartással rendelkezik, kipróbálhatja a projektet az Arduino hivatalos webhelyén.
További cikkek a sorozatban:
- Mi az Arduino és mit tudsz csinálni vele? Mi az Arduino és mit lehet tenni vele?Az Arduino egy figyelemre méltó kis elektronikai eszköz, de ha még soha nem használta ezt, akkor mi is pontosan ezek, és mit lehet ezzel csinálni? Olvass tovább ?
- Mi az Arduino kezdőkészlet és mit tartalmaz? Mit tartalmaz egy Arduino kezdőkészlet? [MakeUseOf magyarázat]Korábban már bemutattam az Arduino nyílt forráskódú hardvert itt a MakeUseOf-on, de nemcsak a tényleges Arduino-ra van szükséged, hogy valamit beépítsen belőle, és valóban elinduljon. Az Arduino "indítókészletek" ... Olvass tovább
- További kiváló alkatrészek, amelyeket vásárolhat a kezdőkészlettel További 8 kiváló alkatrész az Arduino projektekhezTehát Ön egy Arduino indítókészlet megszerzésén gondolkodik, de azon kíváncsi, vajon elegendő-e néhány alapvető LED és ellenállás, hogy elfoglalja a hétvégét? Valószínűleg nem. Itt van még egy 8 ... Olvass tovább
- Az Arduino kezdőkészlet első lépései? Illesztőprogramok telepítése és az alaplap és a port beállítása Az Arduino kezdőkészlet első lépései - Illesztőprogramok telepítése és az alaplap és a port beállításaTehát vásároltad magadnak egy Arduino kezdőkészletet és esetleg más véletlenszerű alkatrészeket - most mi van? Hogyan kezdje el valójában ezt az Arduino-dolog programozását? Hogyan állítja be ... Olvass tovább
- Fröccsöntés, ingyenes eszköz az áramköri rajzok készítéséhez Fritzing - a végső eszköz az elektronikai projektek rajzolásához [Cross Platform]Annak ellenére, hogy úgy hangzik, mint egy alkopop, a Fritzing valójában hihetetlen apró méretű ingyenes szoftver, amelyet létrehozhat áramköri és alkatrészdiagramok gyors prototípusú elektronikai táblákhoz, például a fantasztikus nyílt forráskódú eszközökhöz Arduino ... Olvass tovább
- A Arduino alkalmazás felépítésének részletesebb áttekintése és a példa a pislogó programra Az Arduino első lépései: Áttekintés a nyomtatott áramkörről és a program felépítésérőlLegutóbb hagytam, hogy beállította Arduino-ját Mac vagy Windows operációs rendszerre, és feltöltött egy egyszerű tesztalkalmazást, amely villogott a fedélzeti LED-en. Ma el fogom magyarázni a kódot ... Olvass tovább
- Arduino Xmas fa fények projekt Arduino projekt: Hogyan készítsünk villanó karácsonyi fényeket díszekkelEz a következő rész az Arduino tanulási sorozatunkban, és ezúttal az Arrainokat fogjuk megismerni és felhasználni egy kis karácsonyfa dísz készítésére különféle villogó sorozatokkal. Ez egy ... Olvass tovább (AKA tanulás a tömbökről)
- Mi a bináris? Mi a bináris? [Technológia magyarázata]Mivel a bináris annyira alapvető fontosságú a számítógépek létezéséhez, furcsanak tűnik, hogy még soha nem foglalkoztunk a témával - tehát ma azt gondoltam, hogy röviden áttekintjük, mi a bináris ... Olvass tovább
Ami a mai napig megyünk a műszaknyilvántartásokkal, úgy gondolom, hogy sokat fedeztünk. Mint mindig, arra buzdítanék Önt, hogy játsszon és módosítsa a kódot, és bátran kérdezze meg a megjegyzésben felmerülő kérdéseit, vagy akár ossza meg a linket a félelmetes műszaknyilvántartáson alapuló projektjéhez.
James rendelkezik mesterséges intelligencia BSc-vel, CompTIA A + és Network + tanúsítvánnyal rendelkezik. A MakeUseOf vezető fejlesztője, és szabadidejét VR paintballon és társasjátékokon játszik. Gyerekkora óta épít PC-ket.