Skelbimas

arduino programavimasŠiandien pabandysiu jus šiek tiek išmokyti apie „Shift“ registrus. Tai yra gana svarbi „Arduino“ programavimo dalis iš esmės todėl, kad jie padidina išėjimų, kuriais galite naudotis, skaičių mainais tik į 3 valdymo kaiščius. Norėdami gauti dar daugiau išėjimų, galite kartu registruoti „grandinės perjungimo“ registrus.

Tačiau tai yra reikšmingas sunkumų šuolis nuo ankstesnių vadovėlių, ir aš labai rekomenduoju turėti tikrai geras ankstesnės medžiagos supratimas (nuorodos šio straipsnio pabaigoje), taip pat supratimas dvejetainių pagrindų Kas yra dvejetainis? [Technologijos paaiškinta]Atsižvelgiant į tai, kad dvejetainis kompiuteris yra nepaprastai svarbus, atrodo keista, kad mes niekada anksčiau nenagrinėjome šios temos - todėl šiandien pagalvojau, kad trumpai apžvelgsiu, kas yra dvejetainis ... Skaityti daugiau kurį rašiau paskutinį kartą.

Kas yra „Shift“ registras?

Išvesties poslinkio registras, techniškai kalbant, gauna duomenis nuosekliai ir išveda juos lygiagrečiai. Praktiškai tai reiškia, kad mes galime greitai nusiųsti krūvą išvesties komandų į lustą, liepti ją suaktyvinti, o išėjimai bus išsiųsti į atitinkamus kaiščius. Užuot iteravę per kiekvieną kaištį, mes paprasčiausiai išsiunčiame reikiamą išvestį į visus kaiščius vienu metu, kaip vieną baitą ar daugiau informacijos.

instagram viewer

Jei tai padeda suprasti, galite pagalvoti apie pamainų registrą kaip skaitmeninių išėjimų „masyvą“, bet mes galime praleisti įprastas „digitalWrite“ komandas ir tiesiog nusiųsti bitų seriją, kad jas įjungtume arba išjungtas.

Kaip tai veikia?

Pavarų registrui, kurį naudosime - 74HC595N, įtrauktam į „Oomlout“ starterio rinkinį, reikia tik 3 valdymo kaiščių. Pirmasis yra laikrodis - jums nereikia per daug jaudintis, nes „Arduino“ serijinės bibliotekos valdo ji - bet laikrodis iš esmės yra tik įjungimo / išjungimo elektrinis impulsas, nustatantis duomenų signalo tempą.

Užrakto kaištis naudojamas nurodyti poslinkio registrą, kada jis turėtų įjungti ir išjungti savo išvestis pagal ką tik atsiųstus bitus - t.y., užfiksuodamas juos į vietą.

Galiausiai duomenų kaištis yra tas, kur mes išsiuntėme tikrus serijos duomenis su bitais, kad nustatytume pamainos registro išvesties įjungimo / išjungimo būseną.

Visas procesas gali būti aprašytas 4 etapais:

  1. Nustatykite aukštą arba žemą pirmojo išvesties kaiščio, esančio pamainų registre, duomenų PIN kodą.
  2. Jei norite „perkelti“ duomenis į registrą, paspauskite laikrodį.
  3. Tęskite duomenų nustatymą ir laikrodį, kol nustatysite reikiamą visų išvesties kaiščių būseną.
  4. Norėdami suaktyvinti išvesties seką, paspauskite fiksatoriaus kaištį.

Įgyvendinimas

Šiam projektui jums reikia šių komponentų:

  • 7HC595N pamainos registro lustas
  • 8 šviesos diodai ir atitinkami rezistoriai arba bet kas, ką norite išvesti
  • Įprasta stalviršis, jungtys ir pagrindinis „Arduino“

Jei turite „Oomlout“ pradinį rinkinį, galite atsisiųsti lentos išdėstymą iš čia.

Štai surinkimo vaizdo įrašas:

Plokštės išdėstymas:

arduino programavimas

Ir mano surinkta versija:

„Arduino“ programavimas - žaidimas su pamainų registrais (dar daugiau šviesos diodų), surinktas pamainų registravimo mokymas

Aš pakeičiau originalų „Ooolmout“ pateiktą kodą, bet jei norite jį išbandyti, jį galite visiškai atsisiųsti čia. Įtrauktas kodo paaiškinimas, todėl nukopijuokite ir įklijuokite visą informaciją iš apačios arba pastebin perskaityti kodo paaiškinimą.

/ * * | „Shift Register“ mokymo programa, pagrįsta | * | „Arduino“ eksperimentų rinkinys CIRC-05 | * |.: dar 8 šviesos diodai:. (74HC595 pamainų registras) | * * | Modifikuotas James @ MakeUseOf.com | * * / // Smeigtukų apibrėžimai. // 7HC595N turi tris kaiščius. vidiniai duomenys = 2; // kur mes siunčiame bitus valdyti išėjimus int clock = 3; // palaiko duomenų sinchronizavimą. vidinis fiksatorius = 4; // nurodo poslinkių registrą, kada reikia suaktyvinti išvesties sekos void setup () {// nustatykite tris valdymo kaiščius, kad būtų išvestas pinMode (duomenys, OUTPUT); pinMode (laikrodis, OUTPUT); pinMode (fiksatorius, IŠĖJIMAS); „Serial.begin“ (9600); // kad galėtume siųsti derinimo pranešimus į nuoseklųjį monitorių. } void loop () {outputBytes (); // mūsų pagrindinė išvestis, rašanti 8 bitus, kad būtų parodyta, kaip veikia pamainų registras. //outputIntegers(); // vietoj baitų siunčia duomenis kaip sveikąją vertę, skaičiuodami dvejetainiu būdu. } void outputIntegers () {for (int i = 0; i <256; i ++) {digitalWrite (skląstis, žemas); Serial.println (i); // Derinti, siunčiant išėjimą į nuoseklųjį monitorių shiftOut (duomenys, laikrodis, MSBFIRST, i); „digitalWrite“ (fiksatorius, AUKŠTAS); vėlavimas (100); }} void outputBytes () {/ * baitai arba 8 bitai žymimi B, po kurio eina 8 0 arba 1 s. Šiuo atveju laikykite tai masyvu, kurį naudosime 8 šviesos diodams valdyti. Čia aš pradėjau baito reikšmę kaip 00000001 * / baitų dataValues ​​= B00000001; // pakeiskite tai, kad sureguliuotumėte pradžios modelį. * * Formoje „kilpa“ pradedame žemai patraukdami skląstį, naudodami „shiftOut Arduino“ funkciją pasikalbėkite su pamainų registru, atsiųsdami jam mūsų duomenų baitų vertės reikšmes, atspindinčias šviesos diodų būklę, tada patraukite skląstį aukštai, kad užfiksuotumėte vieta. Galiausiai bitus perkeliame vienoje vietoje į kairę, tai reiškia, kad kita iteracija įjungs sekantį šviesos diodą serijoje. Norėdami pamatyti tikslią siunčiamą dvejetainę vertę, patikrinkite serijinį monitorių. * / už (int i = 0; i <8; i ++) {digitalWrite (skląstis, žemas); „Serial.println“ („dataValues“, BIN); // Derinimas, išėjimo siuntimas į nuoseklųjį monitorių shiftOut (duomenys, laikrodis, MSBFIRST, dataValues); „digitalWrite“ (fiksatorius, AUKŠTAS); dataValues ​​= dataValues ​​<< 1; // Perkelkite bitus vienoje vietoje į kairę - pakeiskite į >>, kad sureguliuotumėte krypties uždelsimą (100); } }

„Bit-Shifting“ („OutputBytes“ funkcija)

Pirmajame kilpos pavyzdyje - outputBytes () - kodas naudoja 8 bitų seką (baitą), kurį jis perkelia į kairę kiekvieną ciklo iteraciją. Svarbu atkreipti dėmesį, kad jei pasislinksite toliau nei įmanoma, šiek tiek prarandate.

Bitų perkėlimas atliekamas naudojant << arba >>, po kurio eina bitų, kuriuos norite perkelti, skaičius.

Peržiūrėkite šį pavyzdį ir įsitikinkite, kad suprantate, kas vyksta:

baitas val = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, mes pametėme tuos kitus bitus! val = val >> 5 // B00000010. 

Vietoj to siunčiami sveikieji skaičiai (funkcija „OutputIntegers“)

Jei vietoj baito siųsite visą skaičių į pamainų registrą, jis paprasčiausiai konvertuos numerį į dvejetainį baitų seką. Vykdydami šią funkciją (nekomentuokite kilpoje ir įkelkite, kad pamatytumėte efektą), turime ciklą, kurio vertė yra 0–255 (didžiausias sveikasis skaičius, kurį galime pateikti su vienu baitu), ir vietoj to siunčia. Iš esmės tai yra dvejetainis skaičius, taigi seka gali atrodyti šiek tiek atsitiktinė, nebent jūsų šviesos diodai išdėstyti ilgąja linija.

Pvz., Jei perskaitysite paaiškintą dvejetainį straipsnį, žinosite, kad skaičius 44 bus pavaizduotas kaip 00101100, taigi toje sekos vietoje įsižiebs 3,5,6 šviesos diodai.

„Arduino“ programavimas - žaisti su poslinkio registrais (dar daugiau šviesos diodų) dvejetainis 44

Daisy Grandininis daugiau nei vienas pamainos registras

Įspūdingas dalykas, susijęs su „Shift“ registrais, yra tas, kad jei jiems bus suteikta daugiau nei 8 bitų informacijos (arba kad ir koks didelis jų registras būtų), jie vėl išstumtų kitus papildomus bitus. Tai reiškia, kad jūs galite sujungti keletą jų serijų, įspausti vieną ilgą bitų grandinę ir paskirstyti ją į kiekvieną registrą atskirai, be jokių papildomų jūsų kodų.

Nors mes čia nenurodysime proceso ar schemų, jei turite daugiau nei vieną pamainų registrą, galite išbandyti projektą iš oficialios Arduino svetainės čia.

Kiti serijos straipsniai:

  • Kas yra Arduino ir ką su juo galite padaryti? Kas yra Arduino ir ką su juo galite padaryti?„Arduino“ yra puikus mažas elektronikos prietaisas, tačiau jei niekada jo dar nenaudojote, tik kokie jie yra, o ką su tuo padaryti? Skaityti daugiau ?
  • Kas yra „Arduino“ pradinis rinkinys ir ką jame yra? Kas yra „Arduino“ pradiniame rinkinyje? [„MakeUseOf“ paaiškina]Aš anksčiau pristačiau „Arduino“ atvirojo kodo aparatinę įrangą čia, „MakeUseOf“, bet norint sukurti ką nors iš jūsų ir pradėti, jums reikia ne tik tikrojo „Arduino“. Arduino „pradiniai rinkiniai“ yra ... Skaityti daugiau
  • Daugiau puikių komponentų, kuriuos galite įsigyti kartu su savo pradiniu rinkiniu Dar 8 puikūs komponentai jūsų „Arduino“ projektamsTaigi, jūs galvojate apie „Arduino“ starterio komplekto įsigijimą, tačiau įdomu, ar pakaks keleto pagrindinių šviesos diodų ir rezistorių, kad jus užimtumėte savaitgalį? Tikriausiai ne. Čia yra dar 8 ... Skaityti daugiau
  • Kaip pradėti naudotis savo „Arduino“ pradiniu rinkiniu? Tvarkyklių įdiegimas ir plokštės bei prievado nustatymas Darbo su „Arduino“ pradiniu rinkiniu pradžia - tvarkyklių diegimas ir plokštės bei prievado nustatymasTaigi, jūs nusipirkote sau „Arduino“ pradinį rinkinį ir galbūt kai kuriuos kitus atsitiktinius įdomius komponentus - o kas dabar? Kaip iš tikrųjų pradedate programuoti šį „Arduino“ dalyką? Kaip jūs jį nustatote ... Skaityti daugiau
  • Frezavimas, nemokamas įrankis grandinių schemoms piešti „Fritzing“ - puikus įrankis elektronikos projektams rengti [Cross Platform]Nepaisant to, kad skamba kaip alkopas, „Fritzing“ iš tikrųjų yra neįtikėtinai nemokama programinė įranga, kurią galite naudoti kurdami grandinių ir komponentų diagramos, naudojamos su sparčiojo prototipų elektronikos plokštėmis, tokiomis kaip fantastinis atvirojo kodo Arduino ... Skaityti daugiau
  • Atidžiau pažvelkite į „Arduino“ programos struktūrą ir pavyzdį „Blink“ programa Pirmieji „Arduino“ veiksmai: atidžiau pažvelkite į plokštę ir programos struktūrąPraėjusį kartą palikau jus nustatę „Arduino“ dirbti su „Mac“ ar „Windows“ ir įkėlę paprastą bandomąją programą, kuri mirksi borto šviesos diode. Šiandien paaiškinsiu kodą ... Skaityti daugiau
  • „Arduino Xmas“ medžio žibintų projektas „Arduino“ projektas: kaip pasigaminti blyškių kalėdinių žibintų papuošalusTai kita mūsų mokomojo „Arduino“ serijos dalis, o šį kartą mes mokysimės apie masyvus ir juos panaudosime, kad padarytume mažą eglutės papuošalą su įvairiomis mirgančiomis sekomis. Tai būtų ... Skaityti daugiau (AKA mokosi apie masyvus)
  • Kas yra dvejetainis? Kas yra dvejetainis? [Technologijos paaiškinta]Atsižvelgiant į tai, kad dvejetainis kompiuteris yra nepaprastai svarbus, atrodo keista, kad mes niekada anksčiau nenagrinėjome šios temos - todėl šiandien pagalvojau, kad trumpai apžvelgsiu, kas yra dvejetainis ... Skaityti daugiau

Tai yra tiek, kiek mes eisime su pamainų registrais šiandien, nes aš manau, kad mes daug ką apžvelgėme. Kaip visada, raginčiau žaisti ir koreguoti kodą ir nedvejodami užduoti visus klausimus, kurie gali kilti komentaruose, ar net pasidalyti nuoroda į jūsų nuostabų pamainų registro projektą.

Jamesas yra dirbtinio intelekto bakalauras ir yra CompTIA A + bei Network + sertifikuotas. Jis yra pagrindinis „MakeUseOf“ kūrėjas ir laisvalaikį praleidžia žaisdamas VR dažasvydį ir stalo žaidimus. Nuo mažens jis statė kompiuterius.