Oglas
Danas ću vas pokušati naučiti malo o Shift registrima. Ovo su prilično važan dio Arduino programiranja, u osnovi jer proširuju broj izlaza koje možete koristiti, u zamjenu za samo 3 upravljačka igla. Možete i zajedno registrirati lanac zamjene da biste postigli još više rezultata.
Ovo je značajan skok poteškoće u odnosu na prethodne tutorijale, a toplo vam predlažem da imate stvarno dobro razumijevanje prethodnog materijala (poveznice na kraju ovog članka), kao i razumijevanje osnove binarnog Što je binarno? [Objašnjena tehnologija]S obzirom na to da je binarnost tako apsolutno bitna za postojanje računala, čini se neobično da se nikad nismo bavili tom temom - pa danas bih pomislio da ću dati kratak pregled onoga što binarno okruženje ... Čitaj više o kojoj sam pisao prošli put.
Što je registar promjene?
Registar pomaka u izlazu, tehnički gledano, prima podatke serijski i paralelno ih šalje. U praktičnom smislu to znači da možemo brzo poslati gomilu izlaznih naredbi na čip, reći da se aktivira, a izlazi će biti poslani odgovarajućim iglicama. Umjesto ponavljanja kroz svaki pin, jednostavno šaljemo potreban izlaz svim pinovima odjednom, kao jedan bajt ili više informacija.
Ako vam pomaže da shvatite, registar pomaka možete smatrati "nizom" digitalnih izlaza, ali možemo preskočiti uobičajene naredbe digitalWrite i jednostavno poslati niz bitova da bismo ih uključili ili isključen.
Kako radi?
Registar pomaka koji ćemo koristiti - 74HC595N uključen u Oomlout starter set - trebaju samo 3 kontrolna igle. Prvi je sat - ne trebate se previše brinuti zbog toga koje kontroliraju serijske biblioteke Arduino To - ali sat je u osnovi samo električni impuls koji uključuje / isključuje taj tempo signala podataka.
Zaporni jezičak koristi se za označavanje registra pomaka kada treba uključiti i isključiti izlaze prema bitovima koje smo upravo poslali - tj., Pričvrstiti ih na svoje mjesto.
Konačno, podatkovni pin je tamo gdje smo poslali stvarne serijske podatke s bitovima kako bismo odredili stanje uključenosti / isključenosti izlaza iz registra registra pomaka.
Cijeli se postupak može opisati u 4 koraka:
- Postavite podatkovni pin na visoko ili nisko za prvi izlazni pin na registar promjene.
- Stisnite sat kako biste "prebacili" podatke u registar.
- Nastavite postavljati podatke i pulsirati sat dok ne postavite traženo stanje za sve izlazne igle.
- Stisnite zaporni jezičak da biste aktivirali izlaznu sekvencu.
izvršenje
Za ovaj projekt potrebne su vam sljedeće komponente:
- 7HC595N čip registra registra pomaka
- 8 LED-ova i odgovarajućih otpornika, ili bilo što što želite da pošaljete
- Uobičajena ploča, priključci i osnovni Arduino
Ako imate Oomlout starter kit, možete preuzeti raspored ploče odavde.
Evo videozapisa o montaži:
Izgled ploče:

I moja sastavljena verzija:

Izmijenio sam izvorni kôd koji je dao Ooolmout, ali ako ga želite isprobati, ovdje ga možete u cijelosti preuzeti. Objašnjenje koda je uključeno, pa cijelu stvar kopirajte i zalijepite odozdo ili pastebin pročitati objašnjenje koda.
/ * * | Vodič za registraciju pomaka, temeljen na | * | Arduino eksperimentalni komplet CIRC-05 | * |.: 8 Više LED-ova:. (Registar smjene 74HC595) | * * | Izmijenio James @ MakeUseOf.com | * * / // Pin Definitions. // 7HC595N ima tri igle. int podataka = 2; // gdje šaljemo bitove za kontrolu izlaza int clock = 3; // čuva podatke u sinkronizaciji. int kvaka = 4; // govori registru promjene kada aktivirati postavku nevažeće izlazne sekvence () {// podesite tri upravljačka pina za izlaz pinMode (podaci, OUTPUT); pinMode (sat, IZLAZ); pinMode (zasun, OUTPUT); Serijski počet (9600); // tako da možemo slati ispravke poruka na serijski monitor. } void petlja () {outputBytes (); // naš osnovni izlaz koji upisuje 8 bita kako bi pokazao kako funkcionira registar promjene. //outputIntegers(); // šalje cijelu vrijednost kao podatke umjesto bajtova, učinkovito brojeći u binarnim podacima. } void outputIntegers () {for (int i = 0; i <256; i ++) {digitalWrite (zasun, LOW); Serijski.println (i); // ispravljanje pogrešaka, slanje rezultata na serijski monitor shiftOut (podaci, sat, MSBFIRST, i); digitalWrite (zasun, HIGH); kašnjenje (100); }} void outputBytes () {/ * bajtovi, ili 8-bitni, predstavljeni su s B, a slijedi 8 0 ili 1s. U ovom slučaju, smatrajte da je ovo niz koji ćemo koristiti za kontrolu 8 LED-ova. Ovdje sam započeo vrijednost bajta kao 00000001 * / byte dataValues = B00000001; // promijenite ovo da biste prilagodili početni uzorak / * U petlji for for započinjemo povlačenjem zasuna niskim, koristeći shiftOut Arduino funkciju za razgovarajte s registarom promjene, šaljući nam ovaj bajt podatakaVrijednosti koje predstavljaju stanje LED-ova, a zatim povucite zasun visoko da ih zaključate mjesto. Konačno, bitove premjestimo na jedno mjesto ulijevo, što znači da će sljedeća iteracija uključiti sljedeću LED u nizu. Da biste vidjeli točnu binarnu vrijednost koja se šalje, provjerite serijski monitor. * / for (int i = 0; i <8; i ++) {digitalWrite (zasun, LOW); Serial.println (dataValues, BIN); // ispravljanje pogrešaka, slanje rezultata na serijski monitor shiftOut (podaci, sat, MSBFIRST, dataValues); digitalWrite (zasun, HIGH); dataValues = dataValues << 1; // Pomaknite bitove za jedno mjesto ulijevo - promijenite u >> za podešavanje kašnjenja smjera (100); } }
Bit-Shift (funkcija izlaznih bajtova)
U prvom primjeru petlje - outputBytes () - kôd koristi 8-bitni slijed (bajt) koji se pomiče ulijevo za svaku ponovljenu petlju for. Važno je napomenuti da ako pomaknete dalje nego što je moguće, bit će jednostavno izgubljen.
Pomicanje bita vrši se pomoću << ili >> nakon čega slijedi broj bita po kojima želite prebaciti.
Pogledajte sljedeći primjer i provjerite jeste li razumjeli što se događa:
bajt val = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, izgubili smo te ostale bitove! val = val >> 5 // B00000010.
Umjesto toga slanje cijelih brojeva (funkcija izlaznih integera)
Ako cijeli broj pošaljete u registar promjene umjesto bajta, on će jednostavno pretvoriti broj u binarni slijed bajtova. U ovoj funkciji (komentiranje u petlji i prijenos za prikaz efekta) imamo petlju koja broji 0-255 (najveći cijeli broj koji možemo predstavljati jednim bajtom) i šalje nam umjesto toga. To se u osnovi broji u binarnim formatima, pa se niz može činiti malo slučajnim, osim ako su vaše LED diode položene u dugi red.
Na primjer, ako pročitate članak s binarnim objašnjenjem, znat ćete da će broj 44 biti predstavljen kao 00101100, pa će LED 3,5,6 svijetliti u tom trenutku u nizu.

Daisy veže više registra smjene
Značajna stvar kod Shift Registry je da ako im se pruži više od 8-bitnih podataka (ili koliko je njihov registar velik), oni će opet prebaciti ostale dodatne bitove. To znači da možete povezati niz njih zajedno, gurnuti u jedan dugački lanac bitova i podijeliti ih u svaki registar zasebno, a sve bez dodatnog kodiranja s vaše strane.
Iako ovdje nećemo detaljno opisati postupak ili sheme, ako imate više od jednog registra promjena, projekt možete isprobati sa službene stranice Arduino ovdje.
Ostali članci u nizu:
- Što je Arduino i što možete učiniti s tim? Što je Arduino i što možete učiniti s tim?Arduino je izvanredan mali elektronički uređaj, ali ako ga nikada prije niste koristili, samo što su točno i što možete učiniti s jednim? Čitaj više ?
- Što je Arduino starter kit i što sadrži? Što je uključeno u Arduino Starter Kit? [MakeUseOf objašnjava]Prethodno sam predstavio Arduino hardver otvorenog koda ovdje na MakeUseOf-u, ali trebat će vam više nego samo stvarni Arduino da biste iz njega nešto napravili i zapravo započeli. Arduino "starter setove" su ... Čitaj više
- Više zgodnih komponenti za kupnju sa svojim Starter Kit Još 8 komponenti za vaše Arduino projekteDakle, razmišljate o nabavci Arduino startnog kompleta, ali pitate se hoće li neke osnovne LED i otpornici biti dovoljne da vas ne zauzmu za vikend? Vjerojatno ne. Evo još 8 ... Čitaj više
- Početak rada s Arduino Starter Kitom? Instaliranje upravljačkih programa i postavljanje ploče i priključka Prvi koraci sa svojim Arduino Starter Kitom - Instalacija upravljačkih programa i postavljanje ploče i priključkaDakle, kupili ste sebi Arduino starter kit i možda neke druge slučajne cool komponente - što sad? Kako zapravo započinjete s programiranjem ove Arduino stvari? Kako to postaviti? Čitaj više
- Fritzing, besplatan alat za crtanje dijagrama krugova Fritzing - krajnji alat za crtanje elektroničkih projekata [Cross Platform]Iako zvuči poput alkopopa, Fritzing je zapravo nevjerojatan bit slobodnog softvera koji možete koristiti za stvaranje dijagrami krugova i komponenti za uporabu s elektronskim pločama s brzim prototipiranjem, poput fantastičnog otvorenog koda Težak ... Čitaj više
- Pažljiviji pogled na strukturu aplikacije Arduino i primjer programa treptaja Prvi koraci s Arduinom: bliži pogled na ploču i strukturu programaProšli put sam vas ostavio da ste postavili svoj Arduino za rad sa Macom ili Windowsom i poslao jednostavnu testnu aplikaciju koja je treptala LED-om na vozilu. Danas ću objasniti kôd ... Čitaj više
- Projekt Arduino Xmas svjetla Arduino projekt: Kako napraviti blistave ukrase za božićne lampiceOvo je sljedeći dio u našoj seriji Arduino, a ovaj put ćemo naučiti i koristiti Arrays za izradu malog ukrasa za božićno drvce s raznim blještavim nizovima. Ovo bi bio ... Čitaj više (AKA uči o nizovima)
- Što je Binarni? Što je binarno? [Objašnjena tehnologija]S obzirom na to da je binarnost tako apsolutno bitna za postojanje računala, čini se neobično da se nikad nismo bavili tom temom - pa danas bih pomislio da ću dati kratak pregled onoga što binarno okruženje ... Čitaj više
Toliko ćemo ići danas s registarima smjena, jer mislim da smo puno toga pokrili. Kao i uvijek, ohrabrivao bih vas da se poigrate i prilagodite kôd, i slobodno postavite bilo kakva pitanja u komentarima ili čak podijelite vezu do svog fenomenalnog projekta koji se temelji na registru promjena.
James je diplomirao iz umjetne inteligencije i certificiran je CompTIA A + i Network +. Vodeći je programer MakeUseOf-a, a svoje slobodno vrijeme provodi igrajući VR paintball i boardgames. Gradio je računala još od djeteta.