Reklaam

arduino programmeerimineTäna üritan teile natuke Shift-registrite kohta õpetada. Need on Arduino programmeerimises üsna oluline osa, peamiselt seetõttu, et need suurendavad teie kasutatavate väljundite arvu, vahetades vastu ainult 3 juhtseadist. Veelgi enamate väljundite saamiseks võite koos registreerida ka ahelavahetuse registreid.

See on eelmistest õpetustest siiski oluline raskustes hüppamine ja soovitan tungivalt, et teil oleks väga hea arusaam eelmisest materjalist (lingid selle artikli lõpus), samuti mõistmine binaarse alused Mis on binaarne? [Tehnoloogia selgitatud]Arvestades, et binaarne on nii oluline arvutite olemasolu jaoks, tundub veider, et me pole seda teemat kunagi varem käsitlenud - seega mõtlesin täna, et annaksin lühikese ülevaate sellest, mida binaarne ... Loe rohkem millest ma eelmine kord kirjutasin.

Mis on vahetustega register?

Väljundi nihke register võtab tehniliselt öeldes andmeid järjestikku ja väljastab need paralleelselt. Praktiliselt tähendab see, et võime kiibile kiiresti saata hunniku väljundkäske, käskida see aktiveerida ja väljundid saadetakse vastavatele tihvtidele. Iga tihvti kaudu iteratsiooni asemel saadame vajaliku väljundi kõikidele tihvtidele korraga, ühe või mitme baitina.

Kui see aitab teil paremini aru saada, võite mõelda nihkeregistrile kui digitaalsete väljundite massiivile, kuid me võime tavalised digitalWrite-käsud vahele jätta ja lihtsalt bitiseeria saata, et neid sisse või sisse lülitada väljas.

Kuidas see töötab?

Kasutatav nihkeregister - Oomlouti stardikomplekti kuuluv 74HC595N - vajab ainult 3 juhttappi. Esimene on kell - te ei pea selle pärast liiga palju muretsema, kuna Arduino seeriaraamatukogu juhib see - aga kell on põhimõtteliselt lihtsalt sisse / välja lülitatud elektriline impulss, mis määrab andmesignaali tempo.

Riivtihvti abil öeldakse nihkeregistrile, millal see peaks oma väljundid sisse ja välja lülitama vastavalt bittidele, mille me just saatsime - st lukustades need oma kohale.

Lõpuks on andmetipp sinna, kus me tegelikud jadaandmed bittidega saatsime, et määrata nihkeregistri väljundite sisse / välja olek.

Kogu protsessi saab kirjeldada neljas etapis:

  1. Seadke vahetusregistri esimese väljundpinge jaoks andmetipp kõrgele või madalale.
  2. Andmete registrisse nihutamiseks lülitage kella sisse.
  3. Jätkake andmete seadistamist ja kella pulsseerimist, kuni olete kõigi väljundtappide jaoks vajaliku oleku seadnud.
  4. Väljundjärjestuse aktiveerimiseks libistage riivi tihvti.

Rakendamine

Selle projekti jaoks vajate järgmisi komponente:

  • 7HC595N nihkeregistri kiip
  • 8 LED-i ja sobivad takistid või kõik, mida soovite väljundiks
  • Tavaline leivalaud, pistikud ja tavaline Arduino

Kui teil on Oomlouti stardikomplekt, saate leivalaua paigutuse siit alla laadida.

Siin on monteerimisvideo:

Laua paigutus:

arduino programmeerimine

Ja minu kokku pandud versioon:

Arduino programmeerimine - vahetustega registritega mängimine (a.k.a veelgi rohkem LEDe) kokkupandud vahetusregistrite õpetus

Olen muutnud Ooolmouti pakutavat algset koodi, kuid kui soovite seda proovida, saate selle täies ulatuses alla laadida siit. Koodi seletus on lisatud, nii et kopeerige ja kleepige kogu asi altpoolt või pastebin koodi selgituse lugemiseks.

/ * * | Vahetusregistri õpetus, mis põhineb | * | Arduino katsekomplekt CIRC-05 | * |: Veel 8 LED-i: (74HC595 vahetustega register) | * * | Muudetud James @ MakeUseOf.com | * * / // Pin määratlused. // 7HC595N on kolm tihvti. int andmed = 2; // kuhu saadame bitid väljundite juhtimiseks int kell = 3; // hoiab andmeid sünkroonis. int riiv = 4; // teatab vahetuste registrile, millal väljundjärjestuse tühisuse seadistamine aktiveerida () {// seadke kolm juhtseadist pinMode (andmed, VÄLJUND) väljundiks; pinMode (kell, VÄLJUND); pinMode (riiv, VÄLJUND); Serial.begin (9600); // nii saame saata silumisseadeid jadamonitorile. } void loop () {outputBytes (); // meie põhiväljund, mis kirjutab 8-bitiseid nihkeregistri toimimise näitamiseks. //outputIntegers(); // saadab baitide asemel andmetena täisarvu, mis tegelikult loendatakse binaarselt. } void outputIntegers () {jaoks (int i = 0; i <256; i ++) {digitalWrite (riiv, LOW); Serial.println (i); // Silumine, väljundi saatmine jadamonitorile shiftOut (andmed, kell, MSBFIRST, i); digitalWrite (riiv, HIGH); viivitus (100); }} void outputBytes () {/ * baiti ehk 8-bitist tähistab B, millele järgneb 8 0 või 1 s. Sel juhul mõelge sellele kui massiivile, mida kasutame 8 LEDi juhtimiseks. Siin olen alustanud baitide väärtuseks 00000001 * / bait dataValues ​​= B00000001; // muuda seda stardimustri kohandamiseks / * For-ahelas alustame riivi madalalt tõmbamisega, kasutades funktsiooni shiftOut Arduino rääkige vahetuste registriga, saates talle meie andmebaidi väärtused, mis tähistavad LED-ide olekut, siis tõmmake riiv kõrgele, et lukustada need koht. Lõpuks nihutame bitti ühest kohast vasakule, see tähendab, et järgmine iteratsioon lülitab sisse seeria järgmise LED-i. Täpse saattava kahendväärtuse nägemiseks kontrollige jadamonitori. * / jaoks (int i = 0; i <8; i ++) {digitalWrite (riiv, LOW); Serial.println (dataValues, BIN); // Silumine, väljundi saatmine jadamonitorile shiftOut (andmed, kell, MSBFIRST, dataValues); digitalWrite (riiv, HIGH); dataValues ​​= dataValues ​​<< 1; // Nihutage bitti ühest kohast vasakule - suuna viivituse reguleerimiseks muutke väärtust >> (100); } }

Biti nihutamine (funktsioon OutputBytes)

Esimeses silmusnäites - outputBytes () - kasutab kood 8-bitist jada (bait), mida see nihutab vasakule silmuse iga iteratsiooni vasakule. Oluline on märkida, et kui nihutate kaugemale kui võimalik, kaob see lihtsalt ära.

Biti nihutamine toimub, kasutades << või >>, millele järgneb bittide arv, mida soovite nihutada.

Vaadake järgmist näidet ja veenduge, et saate toimuvast aru:

bait val = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, kaotasime need muud bitid! val = val >> 5 // B00000010. 

Täisarvude saatmine selle asemel (funktsioon OutputIntegers)

Kui saadate baitide asemel nihkeregistrisse terve numbri, teisendab see numbri lihtsalt kahendbaidiseks jadaks. Selles funktsioonis (silmuse kommenteerimine ja efekti nägemiseks üleslaadimine) on meil jaoks silmus, mille arv on vahemikus 0–255 (suurim täisarv, mida saame ühe baitiga tähistada), ja saadab selle hoopis. Põhimõtteliselt loeb see kahendkoodina, nii et jada võib tunduda pisut juhuslik, kui teie LED-id pole pikemas reas paigutatud.

Näiteks kui loete binaarselt seletatud artiklit, siis teate, et number 44 on tähistatud kui 00101100, nii et LED-id 3,5,6 hakkavad selles järjestuse punktis süttima.

Arduino programmeerimine - nihkeregistritega mängimine (a.k.a veelgi rohkem LEDe) binaarne 44

Daisy aheldab rohkem kui ühte vahetuste registrit

Shift-registrite puhul on tähelepanuväärne see, et kui neile antakse rohkem kui 8-bitist teavet (või kui suur nende register on), siis nihutavad nad ülejäänud täiendavad bitid uuesti välja. See tähendab, et saate nende seeria omavahel ühendada, lükata ühe pika bittide ahela sisse ja jaotada see igasse registrisse eraldi, ilma et teie enda jaoks oleks vaja täiendavat kodeerimist.

Ehkki me ei kirjelda siin protsessi ega skeemide üksikasju, saate enama kui ühe vahetuste registri abil proovida projekti siin Arduino ametlikul saidil.

Muud sarja artiklid:

  • Mis on Arduino ja mida saate sellega teha Mis on Arduino ja mida saate sellega teha?Arduino on tähelepanuväärne väike elektroonikaseadme, kuid kui te pole seda kunagi varem kasutanud, siis lihtsalt millised need täpselt on ja mida saate ühega teha? Loe rohkem ?
  • Mis on Arduino stardikomplekt ja mida see sisaldab? Mis on Arduino stardikomplektis? [MakeUseOf selgitab]Olen varem tutvustanud siin MakeUseOfil Arduino avatud lähtekoodiga riistvara, kuid selleks, et midagi sellest välja ehitada ja tegelikult tööle asuda, vajate enamat kui ainult tegelikku Arduinot. Arduino "stardikomplektid" on ... Loe rohkem
  • Rohkem lahedaid komponente, mida oma stardikomplektiga osta Veel 8 lahedat komponenti teie Arduino projektideleNiisiis, sa mõtled Arduino stardikomplekti hankimise peale, kuid mõtled, kas mõnest põhilisest LED-ist ja takistist piisab nädalavahetuse hõivamiseks? Ilmselt mitte. Siin on veel 8 ... Loe rohkem
  • Kuidas alustada oma Arduino stardikomplektiga? Draiverite installimine ning tahvli ja pordi seadistamine Alustamine oma Arduino stardikomplektiga - draiverite installimine ning tahvli ja pordi seadistamineNiisiis, olete ostnud endale Arduino stardikomplekti ja võib-olla veel mõned juhuslikud lahedad komponendid - mis nüüd saab? Kuidas selle Arduino asja programmeerimisega tegelikult algust teha? Kuidas seda üles seada ... Loe rohkem
  • Fritzing, tasuta tööriist skeemide joonistamiseks Fritzing - ülim tööriist elektroonikaprojektide visandamiseks [platvormiülene]Hoolimata sellest, et see kõlab nagu alkopopp, on Fritzing tegelikult uskumatu natuke tasuta tarkvara, mida saate luua vooluringide ja komponentide diagrammid kasutamiseks kiire prototüübiga elektroonikaplaatidega, näiteks fantastilise avatud lähtekoodiga Arduino ... Loe rohkem
  • Arduino rakenduse struktuuri lähem ülevaade ja näiteprogramm Blink Esimesed sammud Arduinoga: trükkplaadi ja programmi struktuuri lähem ülevaadeViimati lahkusin teilt, kui olete seadnud Arduino töötama Maci või Windowsiga ja laadinud üles lihtsa testirakenduse, mis vilgutas sisseehitatud LED-i. Täna ma seletan koodi ... Loe rohkem
  • Arduino Xmas puu tulede projekt Arduino projekt: kuidas teha sähvatusi jõulutuledSee on järgmine osa meie Arduino õppimisseeriast ning seekord õpime tundma ja kasutama massiive, kuidas teha väike vilkuva jadaga jõulupuu ornament. See oleks ... Loe rohkem (AKA õpib massiive)
  • Mis on binaarne? Mis on binaarne? [Tehnoloogia selgitatud]Arvestades, et binaarne on nii oluline arvutite olemasolu jaoks, tundub veider, et me pole seda teemat kunagi varem käsitlenud - seega mõtlesin täna, et annaksin lühikese ülevaate sellest, mida binaarne ... Loe rohkem

See on niipalju kui tänapäeval minnakse vahetustega registritega, kuna ma arvan, et oleme palju katnud. Nagu ikka, julgustan teid mängima koodiga ja seda kohandama ning esitama julgelt küsimusi, mis teil kommentaarides võivad tekkida, või isegi jagama linki oma vinge vahetuste registril põhineva projekti juurde.

Jamesil on tehisintellekti BSc ning ta on CompTIA A + ja Network + sertifikaadiga. Ta on MakeUseOfi juhtiv arendaja ja veedab oma vaba aega VR-i paintballi ja lauamänge mängides. Ta on lapsest peale arvutit ehitanud.