Taula de continguts:

Pantalla LED de 64 píxels RGB: un altre clon Arduino: 12 passos (amb imatges)
Pantalla LED de 64 píxels RGB: un altre clon Arduino: 12 passos (amb imatges)

Vídeo: Pantalla LED de 64 píxels RGB: un altre clon Arduino: 12 passos (amb imatges)

Vídeo: Pantalla LED de 64 píxels RGB: un altre clon Arduino: 12 passos (amb imatges)
Vídeo: Веб-программирование – информатика для руководителей бизнеса 2016 2024, De novembre
Anonim
Pantalla LED de 64 píxels RGB: un altre clon Arduino
Pantalla LED de 64 píxels RGB: un altre clon Arduino
Pantalla LED de 64 píxels RGB: un altre clon Arduino
Pantalla LED de 64 píxels RGB: un altre clon Arduino
Pantalla LED de 64 píxels RGB: un altre clon Arduino
Pantalla LED de 64 píxels RGB: un altre clon Arduino

Aquesta pantalla es basa en una matriu LED de 8x8 RGB. A efectes de proves, es va connectar a una placa Arduino estàndard (Diecimila) mitjançant 4 registres de desplaçament. Després d’aconseguir que funcionés, el vaig permetre en un PCB fabricat. Els registres de desplaçament tenen una amplada de 8 bits i s’interfacen fàcilment amb el protocol SPI. La modulació de l'amplada de pols s'utilitza per barrejar els colors, més endavant. Una part de la memòria RAM de l'MCU s'utilitza com a framebuffer per contenir la imatge. La memòria RAM de vídeo és analitzada per una rutina d’interrupcions en segon pla, de manera que l’usuari pot fer altres coses útils com parlar amb un PC, llegir botons i potenciòmetres. Més informació sobre "Arduino": www.arduino.cc

Pas 1: modulació de l'amplada de pols per barrejar colors

Modulació d'amplada de pols per barrejar colors
Modulació d'amplada de pols per barrejar colors

Modulació d’amplada de pols: QUÈ? La modulació de l’amplada de pols està essencialment encenent i apagant l’energia alimentada a un dispositiu elèctric bastant ràpidament. La potència útil és el resultat de la mitjana matemàtica de la funció d'ona quadrada presa durant l'interval d'un període. Com més temps mantingui la funció en posició ON, més potència obtindreu. PWM té el mateix efecte sobre la brillantor dels LED que un atenuador de llums de corrent altern. La tasca següent és controlar individualment la brillantor de 64 LED RGB (= 192 LED únics!) D’una manera barata i senzilla, de manera que es pot obtenir el conjunt espectre de colors. Preferiblement, no hi hauria d’haver cap parpelleig ni altres efectes pertorbadors. La percepció no lineal de la brillantor que exhibeix l'ull humà no es tindrà en compte aquí (per exemple, la diferència entre el 10% i el 20% de brillantor sembla "més gran" que entre el 90% i el 100%). La imatge (1) il·lustra el principi de treball de l'algorisme PWM. Suposem que al codi se li dóna un valor de 7 per a la brillantor del LED (0, 0). A més, sap que hi ha un màxim de N passos de brillantor. El codi executa N bucles per a tots els nivells de brillantor possibles i tots els bucles necessaris per donar servei a tots els LED de totes les files. En cas que el comptador de bucle x del bucle de brillantor sigui inferior a 7, el LED s’encén. Si és superior a 7, el LED està apagat. Fent això molt ràpidament per a tots els LED, nivells de brillantor i colors base (RGB), cada LED es pot ajustar individualment per mostrar el color desitjat. Les mesures amb un oscil·loscopi demostren que el codi d’actualització de la pantalla requereix aproximadament un 50% de temps de CPU. La resta es pot utilitzar per fer comunicacions en sèrie amb un PC, llegir botons, parlar amb un lector RFID, enviar I2C dades a altres mòduls …

Pas 2: parlar amb els registres de canvi i els LED

Parlant amb registres de canvi i LED
Parlant amb registres de canvi i LED
Parlant amb registres de canvi i LED
Parlant amb registres de canvi i LED

Un registre de desplaçament és un dispositiu que permet carregar dades en sèrie i una sortida paral·lela. També es pot fer l’operació contrària amb el xip adequat. Hi ha un bon tutorial sobre registres de desplaçament al lloc web arduino. Els LEDs són accionats per registres de desplaçament de 8 bits del tipus 74HC595. Cada port pot generar o enfonsar aproximadament 25 mA de corrent. El corrent total per xip enfonsat o obtingut no ha de superar els 70 mA. Aquests xips són extremadament econòmics, de manera que no pagueu més de 40 centaus per peça. Com que els LED tenen una característica exponencial de corrent / voltatge, cal que hi hagi resistències limitants de corrent. Utilitzant la llei d’Ohm: R = (V - Vf) / IR = resistència limitant, V = 5V, Vf = tensió directa del LED, I = corrent desitjat LEDs vermells tenen una tensió directa d’uns 1,8 V, el blau i el verd oscil·len entre 2,5 V i 3,5 V. Utilitzeu un multímetre senzill per determinar-ho. Per a una reproducció adequada del color s’ha de tenir en compte algunes coses: sensibilitat espectral de l’ull humà (vermell / blau: dolent, verd: bo), eficiència del LED a una longitud d’ona i un corrent determinats. A la pràctica, només cal agafar 3 potenciòmetres i ajustar-los fins que el LED mostri una llum blanca adequada. Per descomptat, no s’ha de superar la intensitat màxima del LED. El que també és important aquí és que el registre de desplaçament que condueix les files ha de subministrar corrent als LEDs de 3x8, així que és millor no pujar el corrent cap amunt. Vaig tenir èxit en limitar les resistències de 270 Ohm per a tots els LED, però això depèn de la marca de la matriu de LED, per descomptat. SPI = Interfície perifèrica de sèrie (imatge (1)). Oposat als ports sèrie dels ordinadors (asíncrons, sense senyal de rellotge), SPI necessita una línia de rellotge (SRCLK). A continuació, hi ha una línia de senyal que indica al dispositiu quan les dades són vàlides (chip select / latch / RCLK). Finalment hi ha dues línies de dades, una es diu MOSI (master out slave in), l’altra es diu MISO (master in slave out). L’SPI s’utilitza per connectar circuits integrats, igual que jo2C. Aquest projecte necessita MOSI, SRCLK i RCLK. A més, també s'utilitza la línia d'habilitació (G). Es comença un cicle SPI tirant de la línia RCLK a BAIX (imatge (2)). La MCU envia les seves dades a la línia MOSI. El seu estat lògic és mostrat pel registre de desplaçament a la vora ascendent de la línia SRCLK. El cicle es finalitza estirant la línia RCLK cap a HIGH. Ara les dades estan disponibles a les sortides.

Pas 3: Esquema

Esquema
Esquema
Esquema
Esquema

La imatge (1) mostra com es connecten els registres de desplaçament. Estan encadenats en margarides, de manera que les dades es poden canviar a aquesta cadena i també a través d’ella. Per tant, és fàcil afegir més registres de desplaçament.

La imatge (2) mostra la resta de l’esquema amb l’MCU, connectors, quars … El fitxer PDF adjunt conté els treballs sencers, els millors per imprimir.

Pas 4: Codi font C ++

Codi font C ++
Codi font C ++
Codi font C ++
Codi font C ++
Codi font C ++
Codi font C ++

A C / C ++ normalment cal prototipar funcions abans de codificar-les. # Include int main (void); void do_something (void); int main (void) {do_something ();} void do_something (void) {/ * comentari * / } L'IDE Arduino no requereix aquest pas, ja que els prototips de funcions es generen automàticament. Per tant, els prototips de les funcions no apareixeran al codi que es mostra aquí. una interrupció de desbordament de timer1. Peces de codi que tenen un aspecte lleugerament críptic per a principiants, per exemple mentre (! (SPSR & (1 << SPIF))) {} utilitzeu directament els registres de la MCU. Aquest exemple en paraules: "mentre el bit SPIF del registre SPSR no està configurat no feu res". Només vull destacar que per als projectes estàndard no és realment necessari tractar aquestes coses tan estretament relacionades amb el maquinari. Els principiants no s’han d’espantar per això.

Pas 5: Acabat el gadget

Gadget acabat
Gadget acabat
Gadget acabat
Gadget acabat
Gadget acabat
Gadget acabat

Després d’haver resolt tots els problemes i fer funcionar el codi, només havia de crear un disseny de PCB i enviar-lo a una casa fabulosa. Sembla molt més net:-) Imatge (1): placa de control totalment poblada Imatge (2): cara frontal del PCBI nu Imatge (2): cara posterior Hi ha connectors que separen PORTC i PORTD del xip ATmega168 / 328 i 5V / GND. Aquests ports contenen les línies RX, TX, i la sèrie I2Línies C, línies E / S digitals i 7 línies ADC. Està pensat per apilar escuts a la part posterior del tauler. L'espaiat és adequat per utilitzar perfboard (0,1 polzades). El carregador d'arrencada es pot llampar mitjançant la capçalera ICSP (funciona amb USBtinyISP d'Adafruit). Tan aviat com es faci això, només cal que utilitzeu un adaptador sèrie USB / TTL FTDI estàndard o similar. També he afegit un jumper de reinici automàtic i desactivació. També he preparat un petit script Perl (vegeu el meu bloc), que permet el restabliment automàtic amb cables FTDI que normalment no funcionen de manera immediata (línia RTS vs. DTR). Això funciona a Linux, potser a MAC. Hi ha disponibles plaques de circuits impresos i alguns KIT de bricolatge al meu bloc. Cal soldar SMD. Consulteu els fitxers PDF per obtenir instruccions de construcció i fonts per a matrius LED.

Pas 6: Aplicació: Monitor de càrrega de la CPU per a Linux mitjançant Perl

Es tracta d’un monitor de càrrega molt bàsic amb un historial. Es basa en un script Perl que reuneix la "mitjana de càrrega" del sistema cada 1 s mitjançant iostat. Les dades s’emmagatzemen en una matriu que es desplaça a cada actualització. Les dades noves s’afegeixen a la part superior de la llista; l’entrada més antiga s’elimina. Al meu bloc hi ha informació i descàrregues més detallades (codi …).

Pas 7: Aplicació: Parlar amb altres mòduls mitjançant I²C

Aplicació: Parlar amb altres mòduls mitjançant I²C
Aplicació: Parlar amb altres mòduls mitjançant I²C

Això és només una prova de principi i, de lluny, no és la solució més senzilla per a aquest treball2C permet adreçar directament fins a 127 taules "esclaves". Aquí el tauler de la part dreta del vídeo és el "mestre" (que inicia totes les transferències), el tauler esquerre és l'esclau (a l'espera de dades). Jo2C necessita 2 línies de senyal i les línies elèctriques habituals (+, -, SDA, SCL). Com que és un bus, tots els dispositius hi estan connectats en paral·lel.

Pas 8: Aplicació: "Game Cube":-)

Sol·licitud
Sol·licitud

Només un pensament estrany. Aquest també s'adapta al recinte de fusta que es mostra a la pàgina d'introducció. Té 5 botons a la part posterior que es poden utilitzar per jugar a un joc senzill.

Pas 9: mostrar imatges / animacions a Matrix - Quick Hack

Visualització d’imatges / animacions a Matrix - Quick Hack
Visualització d’imatges / animacions a Matrix - Quick Hack
Visualització d’imatges / animacions a Matrix - Quick Hack
Visualització d’imatges / animacions a Matrix - Quick Hack
Visualització d’imatges / animacions a Matrix - Quick Hack
Visualització d’imatges / animacions a Matrix - Quick Hack
Visualització d’imatges / animacions a Matrix - Quick Hack
Visualització d’imatges / animacions a Matrix - Quick Hack

Per tant, només té 8x8 píxels i hi ha uns quants colors disponibles. Primer, utilitzeu alguna cosa com Gimp per reduir la vostra imatge preferida exactament a 8x8 píxels i desar-la com a format en brut ".ppm" (no ASCII). PPM és fàcil de llegir i processar en un script Perl. L'ús de ImageMagick i l'eina de línia d'ordres "convertir" no funcionaran correctament. Pengeu el nou codi arduino i, a continuació, utilitzeu l'script Perl per carregar-lo al controlador. El parpelleig és només un desajustament entre l’actualització del LED i la freqüència de fotogrames de la meva càmera. Després d’actualitzar una mica el codi, funciona força zippy. Totes les imatges es transfereixen en directe per sèries a mesura que les veieu. Les animacions més llargues es podrien emmagatzemar en una EEPROM externa, tal com es fa en diverses plaques de ràdio-pov.

Pas 10: control interactiu d'animacions emmagatzemades

Per què deixar que el microcontrolador es diverteixi? El culte Arduino té a veure amb la computació física i la interacció, així que només cal afegir un potenciòmetre i prendre el control. Utilitzar una de les 8 entrades del convertidor analògic a digital ho fa molt senzill.

Pas 11: mostrar vídeo en directe

L’ús d’un script Perl i uns quants mòduls facilita la visualització de vídeo quasi en directe als sistemes X11. Es va codificar a Linux i també pot funcionar en MACs. Funciona així: - Obteniu la posició del cursor del ratolí - Captureu una caixa de píxels NxN centrada al cursor - Escaleu la imatge a 8x8 píxels - Envieu-la a la placa LED- repetir

Pas 12: Més llum gairebé de franc

Més llum gairebé gratis
Més llum gairebé gratis

Amb només dos passos, la brillantor es pot augmentar força. Substituïu les resistències de 270 Ω per unes de 169 Ω i porteu un altre registre de desplaçament 74HC595 a IC5.

Recomanat: