Satura rādītājs:

64 pikseļu RGB LED displejs - vēl viens Arduino klons: 12 soļi (ar attēliem)
64 pikseļu RGB LED displejs - vēl viens Arduino klons: 12 soļi (ar attēliem)

Video: 64 pikseļu RGB LED displejs - vēl viens Arduino klons: 12 soļi (ar attēliem)

Video: 64 pikseļu RGB LED displejs - vēl viens Arduino klons: 12 soļi (ar attēliem)
Video: Web Programming - Computer Science for Business Leaders 2016 2024, Decembris
Anonim
64 pikseļu RGB LED displejs - vēl viens Arduino klons
64 pikseļu RGB LED displejs - vēl viens Arduino klons
64 pikseļu RGB LED displejs - vēl viens Arduino klons
64 pikseļu RGB LED displejs - vēl viens Arduino klons
64 pikseļu RGB LED displejs - vēl viens Arduino klons
64 pikseļu RGB LED displejs - vēl viens Arduino klons

Šī displeja pamatā ir 8x8 RGB LED matrica. Pārbaudes nolūkos tas tika savienots ar standarta Arduino plati (Diecimila), izmantojot 4 maiņu reģistrus. Pēc darba sākšanas es to permatizēju uz sablīvēta PCB. Maiņu reģistri ir 8 bitu plati un viegli savienojami ar SPI protokolu. Krāsu sajaukšanai tiek izmantota impulsa platuma modulācija, vairāk par to vēlāk. Daļa no MCU RAM tiek izmantota kā kadru buferis attēla turēšanai. Video RAM tiek parsēts ar pārtraukuma režīmu fonā, tāpēc lietotājs var veikt citas noderīgas lietas, piemēram, sarunāties ar datoru, lasīt pogas un potenciometrus. Vairāk informācijas par "Arduino": www.arduino.cc

1. darbība. Pulsa platuma modulācija krāsu sajaukšanai

Pulsa platuma modulācija krāsu sajaukšanai
Pulsa platuma modulācija krāsu sajaukšanai

Impulsa platuma modulis - KAS? Impulsa platuma modulācija būtībā diezgan ātri ieslēdz un izslēdz elektriskās ierīces barošanu. Izmantojamā jauda izriet no kvadrātviļņu funkcijas matemātiskā vidējā, kas ņemta viena perioda intervālā. Jo ilgāk funkcija paliek ieslēgtā stāvoklī, jo vairāk enerģijas jūs saņemat. PWM ir tāda pati ietekme uz gaismas diodes spilgtumu kā maiņstrāvas gaismas regulētājs. Nākamais uzdevums ir individuāli kontrolēt 64 RGB gaismas diodes (= 192 atsevišķas gaismas diodes!) Spilgtumu lētā un vienkāršā veidā, lai varētu iegūt visu krāsu spektrs. Vēlams, lai nebūtu mirgošanas vai citu traucējošu efektu. Šeit netiks ņemta vērā cilvēka acs demonstrētā spilgtuma nelineārā uztvere (piemēram, atšķirība starp 10% un 20% spilgtumu šķiet "lielāka" nekā starp 90% un 100%). Attēls (1) ilustrē darbības principu. PWM algoritms. Pieņemsim, ka kodam ir dota 7 gaismas diodes spilgtuma vērtība (0, 0). Turklāt tas zina, ka spilgtumā ir maksimāli N soļi. Kods vada N cilpas visiem iespējamiem spilgtuma līmeņiem un visas nepieciešamās cilpas, lai apkalpotu katru LED visās rindās. Ja cilpas skaitītājs x spilgtuma cilpā ir mazāks par 7, gaismas diode tiek ieslēgta. Ja tas ir lielāks par 7, gaismas diode tiek izslēgta. To darot ļoti ātri visām gaismas diodēm, spilgtuma līmeņiem un pamatkrāsām (RGB), katru gaismas diodi var individuāli pielāgot, lai parādītu vēlamo krāsu. Mērījumi ar osciloskopu liecina, ka displeja atsvaidzināšanas kods aizņem aptuveni 50% CPU laika. Pārējo var izmantot sērijveida saziņai ar datoru, pogu lasīšanai, sarunai ar RFID lasītāju, nosūtīšanai I2C dati uz citiem moduļiem …

2. darbība. Runājiet ar maiņu reģistriem un gaismas diodēm

Saruna ar maiņu reģistriem un gaismas diodēm
Saruna ar maiņu reģistriem un gaismas diodēm
Saruna ar maiņu reģistriem un gaismas diodēm
Saruna ar maiņu reģistriem un gaismas diodēm

Maiņu reģistrs ir ierīce, kas ļauj sērijveidā ielādēt datus un paralēlu izvadi. Pretējā darbība ir iespējama arī ar atbilstošu mikroshēmu. Arduino vietnē ir laba pamācība par maiņu reģistriem. Gaismas diodes vada 74HC595 tipa 8 bitu maiņu reģistri. Katrs ports var iegūt vai nogremdēt aptuveni 25 mA strāvu. Kopējā strāva uz vienu nogrimušo vai iegūto mikroshēmu nedrīkst pārsniegt 70 mA. Šīs mikroshēmas ir ārkārtīgi lētas, tāpēc nemaksājiet vairāk par aptuveni 40 centiem par gabalu. Tā kā gaismas diodēm ir eksponenciāls strāvas / sprieguma raksturlielums, jābūt strāvas ierobežojošiem rezistoriem. Izmantojot Ohma likumu: R = (V - Vf) / IR = ierobežojošais rezistors, V = 5 V, Vf = LED priekšējais spriegums, I = vēlamā strāva Sarkanās gaismas diodes priekšējais spriegums ir aptuveni 1,8 V, zils un zaļš svārstās no 2,5 V līdz 3,5 V. Lai to noteiktu, izmantojiet vienkāršu multimetru. Pareizai krāsu atveidošanai jāņem vērā dažas lietas: cilvēka acs spektrālā jutība (sarkana/zila: slikta, zaļa: laba), gaismas diodes efektivitāte noteiktā viļņa garumā un strāva. Praksē vienkārši paņem 3 potenciometrus un pielāgo tos, līdz gaismas diode rāda pareizu baltu gaismu. Protams, nedrīkst pārsniegt maksimālo LED strāvu. Svarīgi šeit ir arī tas, ka rindu virzīšanas maiņu reģistram ir jāpiegādā strāva 3x8 gaismas diodēm, tāpēc labāk nepārspiest strāvu pārāk augstu. Man bija panākumi ar 270 omu ierobežojošiem rezistoriem visām gaismas diodēm, bet tas, protams, ir atkarīgs no LED matricas markas. Maiņu reģistri ir savienoti ar SPI sēriju. SPI = Serial Peripheral Interface (attēls (1)). Pretēji datoru seriālajiem portiem (asinhroni, bez pulksteņa signāla), SPI ir nepieciešama pulksteņa līnija (SRCLK). Pēc tam ir signāla līnija, kas paziņo ierīcei, kad dati ir derīgi (mikroshēmas izvēle / aizbīdnis / RCLK). Visbeidzot, ir divas datu līnijas, vienu sauc par MOSI (master out slave in), otru - par MISO (master in slave out). SPI tiek izmantots integrēto shēmu saskarnei, tāpat kā es2C. Šim projektam nepieciešami MOSI, SRCLK un RCLK. Turklāt tiek izmantota arī iespējošanas līnija (G). SPI cikls sākas, pavelkot RCLK līniju uz LOW (attēls (2)). MCU nosūta savus datus uz MOSI līnijas. No tā loģiskā stāvokļa paraugu ņem maiņu reģistrs SRCLK līnijas augošajā malā. Cikls tiek pārtraukts, velkot RCLK līniju atpakaļ uz HIGH. Tagad dati ir pieejami izvados.

3. darbība. Shēma

Shematisks
Shematisks
Shematisks
Shematisks

Attēlā (1) redzams, kā ir savienoti maiņu reģistri. Tie ir margrietiņas ķēdes, tāpēc datus var pārvietot šajā ķēdē un arī caur to. Tāpēc ir viegli pievienot vairāk maiņu reģistru.

Attēlā (2) redzama pārējā shēma ar MCU, savienotājiem, kvarcu … Pievienotajā PDF failā ir visi darbi, kas vislabāk piemēroti drukāšanai.

4. darbība: avota kods C ++

C ++ avota kods
C ++ avota kods
C ++ avota kods
C ++ avota kods
C ++ avota kods
C ++ avota kods

C/C ++ parasti ir jāprototipē funkcijas pirms to kodēšanas.#Include int main (void); void do_something (void); int main (void) {do_something ();} void do_something (void) {/ * comment */ } Šis solis nav nepieciešams Arduino IDE, jo funkciju prototipi tiek ģenerēti automātiski. Tāpēc šeit parādītajā kodā netiks parādīti funkciju prototipi. Attēls (1): iestatīšana () funkcija Attēls (2): funkcija spi_transfer (), izmantojot ATmega168 mikroshēmas aparatūras SPI (darbojas ātrāk) Attēls (3): kadru bufera kods, izmantojot taimeris1 pārplūdes pārtraukums. Koda gabali, kuriem iesācējiem ir nedaudz noslēpumains izskats, piem kamēr (! (SPSR & (1 << SPIF))) {} tieši izmanto MCU reģistrus. Šis piemērs ar vārdiem: "lai gan SPIF bits reģistrā SPSR nav iestatīts, neko nedara". Es tikai vēlos uzsvērt, ka standarta projektiem patiešām nav nepieciešams risināt šīs lietas, kas ir tik cieši saistītas ar aparatūru. Iesācējiem tas nav jābaidās.

5. darbība. Gatavs sīkrīks

Gatavs sīkrīks
Gatavs sīkrīks
Gatavs sīkrīks
Gatavs sīkrīks
Gatavs sīkrīks
Gatavs sīkrīks

Pēc visu problēmu atrisināšanas un koda darbības uzsākšanas man vienkārši bija jāizveido PCB izkārtojums un jānosūta uz fabriku. Tas izskatās daudz tīrāks:-) Attēls (1): pilnībā apdzīvota kontroliera plate Attēls (2): tukša PC priekšpuse Attēls (2): aizmugurējā puse. Šajos portos ir sērijveida RX, TX līnijas, I2C līnijas, digitālās I/O līnijas un 7 ADC līnijas. Tas ir paredzēts vairogu sakraušanai dēļa aizmugurē. Attālums ir piemērots perfboard (0,1 collas) izmantošanai. Sāknēšanas ielādētāju var aktivizēt, izmantojot ICSP galveni (darbojas ar adafruit USBtinyISP). Tiklīdz tas ir izdarīts, vienkārši izmantojiet standarta FTDI USB/TTL seriālo adapteri vai līdzīgu. Esmu pievienojis arī automātiskās atiestatīšanas-atspējošanas džemperi. Esmu arī sagatavojis nelielu Perl skriptu (skatiet manu emuāru), kas ļauj automātiski atiestatīt ar FTDI kabeļiem, kas parasti nedarbojas (RTS pret DTR līniju). Tas darbojas Linux, varbūt MAC. Manā emuārā ir pieejamas iespiedshēmas plates un daži DIY KIT. Nepieciešama SMD lodēšana! Skatiet PDF failus, lai iegūtu instrukcijas un LED matricu avotus.

6. darbība. Lietojumprogramma: CPU slodzes monitors Linux, izmantojot Perl

Šis ir ļoti vienkāršs slodzes monitors ar vēstures grafiku. Tas ir balstīts uz Perl skriptu, kas ik pēc 1 sekundes apkopo sistēmas "vidējo slodzi", izmantojot iostat. Dati tiek glabāti masīvā, kas tiek pārvietots pēc katra atjauninājuma. Saraksta augšdaļā tiek pievienoti jauni dati, vecākais ieraksts tiek izstumts. Sīkāka informācija un lejupielādes (kods…) ir pieejamas manā emuārā.

7. darbība. Lietošana: saruna ar citiem moduļiem, izmantojot I²C

Pielietojums: saruna ar citiem moduļiem, izmantojot I²C
Pielietojums: saruna ar citiem moduļiem, izmantojot I²C

Tas ir tikai principa pierādījums un līdz šim nav vienkāršākais risinājums šim darbam2C ļauj tieši adresēt līdz 127 "vergu" dēļiem. Šeit video labajā pusē esošā tāfele ir "meistars" (kas uzsāk visus pārsūtījumus), kreisā tāfele ir vergs (gaida datus). Es2C ir nepieciešamas 2 signālu līnijas un parastās elektrības līnijas (+, -, SDA, SCL). Tā kā tas ir autobuss, visas ierīces ir savienotas ar to paralēli.

8. darbība. Lietojumprogramma: "Spēles kubs":-)

Pielietojums
Pielietojums

Vienkārši dīvaina doma. Šī iederas arī koka korpusā, kas parādīts ievadlapā. Tā aizmugurē ir 5 pogas, kuras var izmantot vienkāršas spēles spēlēšanai. BEIGAS?

9. darbība. Attēlu / animāciju parādīšana matricā - ātrā uzlaušana

Attēlu / animāciju parādīšana Matrix - Quick Hack
Attēlu / animāciju parādīšana Matrix - Quick Hack
Attēlu / animāciju parādīšana Matrix - Quick Hack
Attēlu / animāciju parādīšana Matrix - Quick Hack
Attēlu / animāciju parādīšana Matrix - Quick Hack
Attēlu / animāciju parādīšana Matrix - Quick Hack
Attēlu / animāciju parādīšana Matrix - Quick Hack
Attēlu / animāciju parādīšana Matrix - Quick Hack

Tātad tam ir tikai 8x8 pikseļi un dažas krāsas. Vispirms izmantojiet kaut ko līdzīgu Gimp, lai samazinātu iecienīto attēlu līdz precīzi 8x8 pikseļiem un saglabātu to kā.ppm neapstrādātu formātu (nevis ASCII). PPM ir viegli lasīt un apstrādāt Perl skriptā. Izmantojot ImageMagick un komandrindas rīku "konvertēt", nedarbosies pareizi. Augšupielādējiet jauno arduino kodu, pēc tam izmantojiet Perl skriptu, lai augšupielādētu kontrollerī. Mirgošana ir tikai LED atsvaidzināšanas un manas kameras kadru ātruma neatbilstība. Pēc koda nedaudz atjaunināšanas tas darbojas diezgan cirtīgi. Visi attēli tiek pārraidīti tiešraidē sērijveidā, kā jūs tos redzat. Ilgākas animācijas var tikt saglabātas ārējā EEPROM, kā tas tiek darīts dažādās spieķu dēļos.

10. darbība. Saglabāto animāciju interaktīva vadība

Kāpēc ļaut mikrokontrolleram izklaidēties? Arduino kulta pamatā ir fiziskā skaitļošana un mijiedarbība, tāpēc vienkārši pievienojiet potenciometru un pārņemiet kontroli! Izmantojot vienu no 8 analogā digitālā pārveidotāja ieejām, tas ir ļoti vienkārši.

11. darbība: tiešraides video rādīšana

Izmantojot Perl skriptu un dažus moduļus, ir diezgan viegli parādīt gandrīz tiešraides video X11 sistēmās. Tas tika kodēts uz Linux un var darboties arī ar MAC. Tas darbojas šādi:- iegūstiet peles kursora pozīciju- uzņemiet NxN pikseļu lodziņu, kura centrā ir kursors- mērogo attēlu līdz 8x8 pikseļiem- nosūtiet to uz LED plāksni- atkārtot

12. solis: vairāk gaismas gandrīz bez maksas

Vairāk gaismas gandrīz bez maksas
Vairāk gaismas gandrīz bez maksas

Tikai ar diviem soļiem spilgtumu var ievērojami palielināt. Nomainiet 270Ω rezistorus ar 169Ω un atgriezieties citā 74HC595 nobīdes reģistrā uz IC5.

Ieteicams: