Reklāma

arduino programmēšanaŠodien es mēģināšu jūs mazliet iemācīt par maiņu reģistriem. Šīs ir diezgan nozīmīgas Arduino programmēšanas daļas, galvenokārt tāpēc, ka tās paplašina izmantojamo izeju skaitu apmaiņā pret tikai 3 vadības tapām. Jūs varat arī reģistrēt ķēdes maiņu reģistrus, lai iegūtu vēl vairāk iznākumu.

Tomēr tas ir ievērojams grūtību pieaugums, salīdzinot ar iepriekšējām pamācībām, un es ļoti iesaku jums to izdarīt tiešām laba izpratne par iepriekšējo materiālu (saites šī raksta beigās), kā arī izpratne bināro pamati Kas ir binārais? [Tehnoloģiju skaidrojums]Ņemot vērā, ka binārā ir tik būtiska datoru pastāvēšanai, šķiet dīvaini, ka mēs nekad iepriekš neesam pievērsušies šai tēmai - tāpēc šodien es domāju, ka es sniegšu īsu pārskatu par to, kas ir binārais ... Lasīt vairāk kuru es rakstīju pagājušajā reizē.

Kas ir Shift reģistrs?

Izejas maiņu reģistrs, tehniski runājot, saņem datus sērijveidā un izvada tos paralēli. Praktiski tas nozīmē, ka mēs varam ātri nosūtīt čipam daudz izvades komandu, pateikt to aktivizēt, un izejas tiks nosūtītas uz attiecīgajām tapām. Tā vietā, lai iterētu caur katru tapu, mēs vienkārši nosūtām nepieciešamo izvadi visiem tapiem vienlaikus kā vienu baitu vai vairāk informācijas.

Ja tas palīdz jums saprast, varat domāt par maiņu reģistru kā digitālo izvadu “masīvu”, bet mēs varam izlaist parastās digitalWrite komandas un vienkārši nosūtīt bitu sēriju, lai tās ieslēgtu vai izslēgts.

Kā tas darbojas?

Maiņu reģistram, kuru mēs izmantosim - 74HC595N, kas iekļauts Oomlout sākuma komplektā - ir vajadzīgas tikai 3 vadības tapas. Pirmais ir pulkstenis - jums par to nav īpaši jāuztraucas, jo to kontrolē Arduino sērijas bibliotēkas tas - bet pulkstenis būtībā ir tikai ieslēgts / izslēgts elektrisks impulss, kas nosaka datu signāla ātrumu.

Aizbīdņa tapa tiek izmantota, lai norādītu nobīdes reģistru, kad tam vajadzētu ieslēgt un izslēgt izejas atbilstoši bitiem, kurus mēs tikko nosūtījām - t.i., aizslēdzot tos vietā.

Visbeidzot, datu tapa ir vieta, kur mēs nosūtījām faktiskos sērijas datus ar bitiem, lai noteiktu maiņas reģistra izeju ieslēgšanas / izslēgšanas stāvokli.

Visu procesu var aprakstīt 4 posmos:

  1. Iestatiet datu tapu uz augstu vai zemu pirmās izvades tapa maiņu reģistrā.
  2. Pielieciet pulksteni, lai “pārvietotu” datus reģistrā.
  3. Turpiniet iestatīt datus un pulksteņa rādījumus, līdz esat iestatījis visu izejas tapām nepieciešamo stāvokli.
  4. Lai aktivizētu izvades secību, pavelciet aizbīdņa tapu.

Īstenošana

Šim projektam nepieciešami šādi komponenti:

  • 7HC595N maiņas reģistra mikroshēma
  • 8 gaismas diodes un atbilstoši rezistori vai jebkurš, ko vēlaties izvadīt
  • Parastais maizes dēlis, savienotāji un pamata Arduino

Ja jums ir Oomlout sākuma komplekts, no šejienes varat lejupielādēt maizes paneļa izkārtojumu.

Šis ir montāžas video:

Dēļa izkārtojums:

arduino programmēšana

Un mana samontētā versija:

Arduino programmēšana - Spēlēšana ar maiņu reģistriem (vēl vairāk LED), samontēta maiņu reģistra apmācība

Esmu modificējis Ooolmout sniegto oriģinālo kodu, taču, ja vēlaties to izmēģināt, to var pilnībā lejupielādēt šeit. Iekļauts koda skaidrojums, tāpēc nokopējiet un ielīmējiet visu lietu no apakšas vai pamani lai izlasītu koda skaidrojumu.

/ * * | Pamācība par maiņu reģistru, pamatojoties uz | * | Arduino eksperimentu komplekts CIRC-05 | * |.: vēl 8 gaismas diodes:. (74HC595 maiņu reģistrs) | * * | Pārveidoja Džeimss @ MakeUseOf.com | * * / // Tapu definīcijas. // 7HC595N ir trīs tapas. int dati = 2; // kur mēs sūtām bitus, lai kontrolētu izejas int pulkstenis = 3; // uztur datus sinhronizācijā. int aizbīdnis = 4; // pasaka maiņu reģistru, kad jāaktivizē izvades secības tukšuma iestatīšana () {// iestatiet trīs vadības tapas, lai izvadītu pinMode (dati, OUTPUT); pinMode (pulkstenis, OUTPUT); pinMode (aizbīdnis, OUTPUT); Sērijas.begin (9600); // lai mēs varētu nosūtīt atkļūdošanas ziņojumus uz seriālo monitoru. } void cilpa () {outputBytes (); // mūsu pamata izeja, kas raksta 8 bitus, lai parādītu, kā darbojas maiņu reģistrs. //outputIntegers(); // sūta veselu skaitli kā datus, nevis baitus, faktiski skaitot binārā. } void outputIntegers () {for (int i = 0; i <256; i ++) {digitalWrite (fiksators, LOW); Serial.println (i); // atkļūdošana, izejas nosūtīšana uz seriālā monitora shiftOut (dati, pulkstenis, MSBFIRST, i); digitalWrite (aizbīdnis, AUGSTS); kavēšanās (100); }} void outputBytes () {/ * baiti vai 8 biti tiek attēloti ar B, kam seko 8 0 vai 1. Šajā gadījumā uzskatiet, ka tas ir līdzīgs masīvam, kuru mēs izmantosim, lai kontrolētu 8 gaismas diodes. Šeit es esmu sācis baita vērtību kā 00000001 * / baitu dataValues ​​= B00000001; // mainiet to, lai pielāgotu sākuma modeli / * For cilpā mēs sākam, pavelkot zemu aizbīdni, izmantojot funkciju shiftOut Arduino, lai sarunājieties ar maiņu reģistru, nosūtot tam mūsu datu baitu vērtības, kas atspoguļo gaismas diožu stāvokli, pēc tam velciet aizbīdni augstu, lai tos nofiksētu vieta. Visbeidzot, mēs nobīdām bitus vienu vietu pa kreisi, kas nozīmē, ka nākamā atkārtošanās ieslēgs nākamo sērijas gaismas diodi. Lai redzētu precīzu nosūtīto bināro vērtību, pārbaudiet seriālo monitoru. * / priekš (int i = 0; i <8; i ++) {digitalWrite (fiksators, LOW); Serial.println (dataValues, BIN); // atkļūdošana, izejas nosūtīšana uz seriālā monitora shiftOut (dati, pulkstenis, MSBFIRST, dataValues); digitalWrite (aizbīdnis, AUGSTS); dataValues ​​= dataValues ​​<< 1; // Pārbīdiet bitus vienu vietu pa kreisi - mainiet uz >>, lai pielāgotu virziena aizkavi (100); } }

Bitu maiņa (funkcija OutputBytes)

Pirmajā cilpas piemērā - outputBytes () - kods izmanto 8 bitu secību (baitu), kuru pēc tam pārbīdot pa kreisi no katras cilpas atkārtojuma. Ir svarīgi atzīmēt, ka, ja jūs pārvietojaties tālāk, nekā tas ir iespējams, mazliet tiek zaudēts.

Bitu nobīde tiek veikta, izmantojot << vai >>, kam seko bitu skaits, kuru vēlaties pārbīdīt.

Apskatiet šo piemēru un pārliecinieties, ka saprotat, kas notiek:

baitu val = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, mēs pazaudējām šos pārējos bitus! val = val >> 5 // B00000010. 

Sūtīšana veselu skaitļu vietā (funkcija OutputIntegers)

Ja maiņas reģistrā baita vietā nosūtīsit veselu numuru, tas vienkārši pārveidos skaitli binārā baitu secībā. Šajā funkcijā (bez komentāra cilpā un augšupielādējot, lai redzētu efektu), mums ir for cilpa, kuras skaitlis ir no 0 līdz 255 (lielākais vesels skaitlis, ko mēs varam attēlot ar vienu baitu), un tā vietā tiek nosūtīta. Tā pamatā ir binārā, tāpēc secība var šķist nedaudz izlases veida, ja vien jūsu gaismas diodes nav izkārtotas garā rindā.

Piemēram, ja lasāt bināro skaidrojumu, jūs zināt, ka skaitlis 44 tiks attēlots kā 00101100, tāpēc secības punktā iedegsies gaismas diodes 3,5,6.

Arduino programmēšana - Spēlēšana ar maiņu reģistriem (vēl vairāk gaismas diožu) binārā 44

Daisy Chaining vairāk nekā vienu maiņu reģistru

Ievērojama lieta par Shift reģistriem ir tāda, ka, ja viņiem tiek sniegta vairāk nekā 8 bitu informācija (vai cik liels ir viņu reģistrs), tie atkal izsvītro citus papildu bitus. Tas nozīmē, ka jūs varat savienot virkni no tām kopā, iebīdīt vienu garu bitu ķēdi un nodot to katram reģistram atsevišķi, bez jebkādas papildu kodēšanas no jūsu puses.

Lai gan mēs šeit sīkāk neizklāsta procesu vai shēmas, ja jums ir vairāk nekā viens maiņu reģistrs, varat izmēģināt projektu no oficiālās Arduino vietnes šeit.

Citi sērijas raksti:

  • Kas ir Arduino un ko jūs ar to varat darīt? Kas ir Arduino un ko jūs ar to varat darīt?Arduino ir ievērojama maza elektronikas ierīce, taču, ja nekad to vēl nekad neesat izmantojis, tad tieši kādi tie ir, un ko jūs varat darīt ar vienu? Lasīt vairāk ?
  • Kas ir Arduino sākuma komplekts un ko tas satur? Kas ir iekļauts Arduino sākuma komplektā? [MakeUseOf skaidrojumi]Es iepriekš esmu iepazīstinājis Arduino atvērtā koda aparatūru šeit vietnē MakeUseOf, taču, lai kaut ko izveidotu no tā un faktiski sāktu, jums ir nepieciešams vairāk nekā tikai faktiskais Arduino. Arduino "sākuma komplekti" ir ... Lasīt vairāk
  • Vairāk atdzist komponentu, ko pirkt kopā ar savu sākuma komplektu Vēl 8 atdzist komponenti jūsu Arduino projektiemTātad, jūs domājat par Arduino sākuma komplekta iegādi, bet domājat, vai ar dažiem pamata gaismas diodēm un rezistoriem pietiks, lai jūs būtu aizņemts nedēļas nogalē? Visticamāk ne. Šeit ir vēl 8 ... Lasīt vairāk
  • Darba sākšana ar Arduino sākuma komplektu? Draiveru instalēšana un paneļa un porta iestatīšana Darba sākšana ar Arduino sākuma komplektu - draiveru instalēšana un paneļa un porta iestatīšanaTātad, jūs esat sev iegādājies Arduino sākuma komplektu un, iespējams, arī dažus citus nejaušus lieliskus komponentus - ko tad tagad? Kā jūs patiesībā sākat šīs Arduino lietas programmēšanu? Kā jūs to iestatījāt ... Lasīt vairāk
  • Frizēšana, bezmaksas rīks shēmu diagrammu zīmēšanai Fritzing - labākais rīks elektronisko projektu skicēšanai [Cross Platform]Neskatoties uz to, ka tas izklausās kā alkops, Fritzing patiesībā ir neticami daudz bezmaksas programmatūras, kuru varat izmantot, lai izveidotu ķēžu un komponentu diagrammas lietošanai ar ātrās prototipēšanas elektronikas plāksnēm, piemēram, fantastisko atvērtā koda Arduino ... Lasīt vairāk
  • Tuvāk aplūkojiet Arduino lietotnes struktūru un mirkšķināšanas programmas piemēru Pirmie soļi ar Arduino: tuvāk aplūkojiet shēmas plati un programmas struktūruPagājušajā reizē es atstāju jūs iestatījis Arduino darbam ar Mac vai Windows un augšupielādējis vienkāršu testa lietotni, kas mirgoja iebūvētā gaismas diode. Šodien es paskaidrošu kodu ... Lasīt vairāk
  • Arduino Ziemassvētku koku gaismu projekts Arduino projekts: Kā padarīt bezgaumīgus Ziemassvētku gaismas rotājumusŠī ir nākamā daļa no mūsu mācīšanās Arduino sērijām, un šoreiz mēs iemācīsimies un izmantosim masīvus, lai izveidotu nelielu Ziemassvētku eglīšu rotājumu ar dažādām mirgojošām sekcijām. Tas būtu ... Lasīt vairāk (AKA mācās par masīviem)
  • Kas ir binārais? Kas ir binārais? [Tehnoloģiju skaidrojums]Ņemot vērā, ka binārā ir tik būtiska datoru pastāvēšanai, šķiet dīvaini, ka mēs nekad iepriekš neesam pievērsušies šai tēmai - tāpēc šodien es domāju, ka es sniegšu īsu pārskatu par to, kas ir binārais ... Lasīt vairāk

Tas ir tik daudz, cik mēs šodien iesim ar maiņu reģistriem, jo ​​es domāju, ka mēs esam daudz apskatījuši. Kā vienmēr, es aicinu jūs spēlēties ar kodu un pielāgot to, kā arī droši uzdodiet jautājumus, kas jums varētu rasties komentāros, vai pat kopīgojiet saiti uz savu lielisko maiņu reģistra projektu.

Džeimsam ir mākslīgā intelekta bakalaura grāds, un viņš ir sertificēts CompTIA A + un Network +. Viņš ir galvenais MakeUseOf izstrādātājs un brīvo laiku pavada, spēlējot VR peintbolu un galda spēles. Kopš mazotnes viņš būvēja datorus.