
Gabriel Brooks
0
4978
73
Danas ću vas pokušati naučiti malo o promjenama registara. 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. Također možete zajedno registrirati lanac zamjena lanca kako biste postigli još više rezultata.
Ovo je značajan skok poteškoće u odnosu na prethodne vodiče, a toplo vam predlažem da imate stvarno dobro razumijevanje prethodnog materijala (veze na kraju ovog članka), kao i razumijevanje osnova binarnog sadržaja Što je binarno? [Objasnio tehnologiju] Što je binarno? [Objasnjena tehnologija] S obzirom na to da je binarnost tako apsolutno temeljna za postojanje računala, čini se čudnim da se nikad prije nismo bavili tom temom - pa bih danas pomislio da ću dati kratak pregled onoga što je binarno stanje… što sam napisao posljednji put.
Što je registar promjene?
Registar pomaka u izlazu, tehnički gledano, prima podatke serijski i šalje ih paralelno. 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 u razumijevanju, registar pomaka možete smatrati "nizom" digitalnih izlaza, ali možemo preskočiti uobičajene naredbe digitalWrite i jednostavno poslati niz bitova da biste ih uključili ili isključili.
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, jer Arduino serijske biblioteke to kontroliraju - ali sat je u osnovi samo električni impuls za uključivanje / isključivanje koji određuje tempo signala podataka.
Klin zasuna koristi se za označavanje registra pomaka kada treba uključiti i isključiti izlaze prema bitovima koje smo mu upravo poslali - tj., Zakačiti ih na svoje mjesto.
Napokon, podatkovni pin je tamo gdje smo poslali stvarne serijske podatke s bitovima kako bismo odredili stanje uključenosti / isključenosti izlaza registara pomaka..
Cijeli se postupak može opisati u 4 koraka:
- Postavite podatkovni pin na visoko ili nisko za prvi izlazni pin u registar promjene.
- Pritiskajte 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 izađete
- 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 kod koji je pružio Ooolmout, ali ako ga želite isprobati, ovdje ga možete u cijelosti preuzeti. Objašnjenje koda je uključeno, pa kopirajte i zalijepite cijelu stvar odozdo ili zalijepite da biste pročitali 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 | * ------------------------------------------------- -------- * / // Definicije pina // 7HC595N ima tri pina int podataka = 2; // gdje šaljemo bitove za kontrolu izlaza int clock = 3; // čuva podatke u sync int latch = 4; // govori registru promjene kada aktivirati postavku poništenja izlazne sekvence () // postaviti tri upravljačka pina na izlaz pinMode (podaci, OUTPUT); pinMode (sat, IZLAZ); pinMode (zasun, OUTPUT); Serial.begin (9600); // tako da možemo slati ispravke pogrešaka na serijski monitor void loop () outputBytes (); // naš osnovni izlaz koji piše 8-bitnih boda kako bi pokazao kako funkcionira registar promjene. // outputIntegers (); // šalje cijelu vrijednost kao podatke umjesto bajtova, učinkovito brojeći u binarnim formatima. 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 <> za podešavanje kašnjenja smjera (100);
Bit-Shift (Funkcija OutputBytes)
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 <> nakon čega slijedi broj bita po kojima želite prebaciti.
Pogledajte sljedeći primjer i provjerite jeste li razumjeli što se događa:
byte val = B00011010 val = val << 3 // B11010000 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 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 slijedu.
Daisy veže više registara 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 ponovno prebaciti ostale dodatne bitove. To znači da možete povezati niz njih zajedno, gurnuti u jedan dugački lanac bitova i podijeliti ih svakom registru zasebno, a sve bez dodatnog kodiranja s vaše strane.
Iako ovdje nećemo detaljno opisati postupak ili šeme, ako imate više od jednog registra smjena, projekt možete isprobati sa službene stranice Arduino ovdje.
Ostali članci u nizu:
- Što je Arduino i što možete učiniti s njim Što je Arduino i što možete učiniti s njim? Š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? ?
- Što je Arduino starter kit i što sadrži? Što je uključeno u Arduino Starter Kit? [MakeUseOf objašnjava] Što je uključeno u Arduino Starter Kit? [MakeUseOf objašnjava] Prethodno sam predstavio Arduino hardver otvorenog koda ovdje na MakeUseOf, ali trebat će vam više nego samo stvarni Arduino da biste iz njega nešto napravili i zapravo započeli. Arduino "startne setove" su…
- Još zgodnijih komponenti za kupnju sa svojim Starter Kit 8 Više cool komponenti za vaše Arduino projekte 8 Još cool komponenti za vaše Arduino projekte Dakle, razmišljate o nabavci Arduino startnog kompleta, ali pitate se hoće li biti nekoliko osnovnih LED i otpornika dovoljno da vas ostane zauzet za vikend? Vjerojatno ne. Evo još 8…
- Prvi koraci sa svojim Arduino Starter Kitom? Instaliranje upravljačkih programa i postavljanje ploče i priključka Početak rada s Arduino Starter Kitom - Instaliranje upravljačkih programa i postavljanje ploče i priključka Početak rada s Arduino Starter Kitom - Instalacija upravljačkih programa i postavljanje ploče i priključka Dakle, kupili ste sebe Arduino starter set i eventualno neke druge nasumične komponente - što sad? Kako zapravo započinjete s programiranjem ove Arduino stvari? Kako to postaviti?
- Fritzing, besplatni alat za crtanje dijagrama krugova Fritzing - Ultimativni alat za skiciranje elektroničkih projekata [Cross Platform] Fritzing - Ultimativni alat za skiciranje elektroničkih projekata [Cross Platform] Iako zvuči poput alkopopa, Fritzing je zapravo nevjerojatan djelić besplatni softver koji možete koristiti za izradu dijagrama krugova i sastavnih dijelova za upotrebu s elektroničkim pločama koje se brzo prototipiraju, poput fantastične Arduino otvorenog izvora ...
- Pažljiviji pogled na strukturu aplikacije Arduino i primjer programa treptaja Prvi koraci s Arduinom: bliži pogled na sklopnu ploču i strukturu programa prvi koraci s arduinom: bliži pogled na ploču i strukturu Programa Prošli put sam vam ostavio da ste postavili svoj Arduino za rad sa Macom ili Windowsom i učitao jednostavnu testnu aplikaciju koja je treptala LED na vozilu. Danas ću objasniti kod ...
- Projekt Arduino Xmas svjetla na drveću Arduino projekt: Kako napraviti ukrase od treperavih božićnih svjetiljki Arduino projekt: Kako napraviti blistave ukrase za božićne lampice Ovo je sljedeći dio naše Arduino serije za učenje, a ovaj put ćemo naučiti o i koristiti Arrays napraviti mali ukras božićnog drvca s raznim blještavim nastavcima. Ovo bi bilo ... (AKA uči o nizovima)
- Što je Binarni? Što je binarno? [Objasnio tehnologiju] Što je binarno? [Objasnjena tehnologija] S obzirom na to da je binarnost tako apsolutno temeljna za postojanje računala, čini se čudnim da se nikada prije nismo bavili tom temom - pa bih danas pomislio da ću dati kratak pregled onoga što je binarno…
Koliko ćemo danas ići s registarima smjena, jer mislim da smo dosta toga pokrili. Kao i uvijek, ohrabrivao bih vas da se poigrate i prilagodite kôd, i slobodno postavite bilo koja pitanja u komentarima ili čak podijelite vezu do svog fantastičnog projekta koji se temelji na registraciji promjena..