Taula de continguts:
- Pas 1: modulació de l'amplada de pols per barrejar colors
- Pas 2: parlar amb els registres de canvi i els LED
- Pas 3: Esquema
- Pas 4: Codi font C ++
- Pas 5: Acabat el gadget
- Pas 6: Aplicació: Monitor de càrrega de la CPU per a Linux mitjançant Perl
- Pas 7: Aplicació: Parlar amb altres mòduls mitjançant I²C
- Pas 8: Aplicació: "Game Cube":-)
- Pas 9: mostrar imatges / animacions a Matrix - Quick Hack
- Pas 10: control interactiu d'animacions emmagatzemades
- Pas 11: mostrar vídeo en directe
- Pas 12: Més llum gairebé de franc
Vídeo: Pantalla LED de 64 píxels RGB: un altre clon Arduino: 12 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:18
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: 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
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
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 ++
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
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
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":-)
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
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
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:
Pantalla tàctil Macintosh - Mac clàssic amb un iPad Mini per a la pantalla: 5 passos (amb imatges)
Pantalla tàctil Macintosh | Mac clàssic amb un iPad Mini per a la pantalla: Aquesta és la meva actualització i disseny revisat sobre com substituir la pantalla d'un Macintosh vintage per un iPad mini. Aquest és el sisè d'aquests que he fet al llarg dels anys i estic bastant content de l'evolució i el disseny d'aquest! El 2013, quan vaig fer
Clon compatible amb DIY Arduino: 21 passos (amb imatges)
Clon compatible amb DIY Arduino: l'Arduino és l'eina definitiva de l'arsenal del Maker. Hauríeu de ser capaços de construir els vostres! Als primers dies del projecte, vers el 2005, el disseny era de peces de forat i la comunicació es feia mitjançant un cable serial RS232. Els fitxers segueixen sent
Clon Arduboy amb pantalla Oled Arduino Nano i I2C: 3 passos
Arduboy Clone With Arduino Nano and I2C Oled Display: Una versió barata del clon Arduboy amb la qual podeu jugar a diversos jocs originals d'Arduboy
Arduino Uno: Animació de mapa de bits en pantalla de pantalla tàctil ILI9341 TFT amb visuino: 12 passos (amb imatges)
Arduino Uno: Animació de mapa de bits a la pantalla tàctil ILI9341 amb pantalla tàctil TFT amb Visuino: els pantalles tàctils TFT basats en ILI9341 són pantalles de pantalla molt populars per a Arduino. Visuino els ha donat suport des de fa força temps, però mai no vaig tenir l'oportunitat d'escriure un tutorial sobre com utilitzar-los. Recentment, però, poca gent va preguntar
Un altre suport per a portàtils (altre portàtil per a portàtil): 4 passos (amb imatges)
Another Laptop Stand (otro Soporte Para Notebook): Per favor, ve una mejora en https://www.instructables.com/id/Mejoras-al-Soporte-para-laptop-laptop-stand-enhan/ Mi notebook tiene un problemita : la pantalla parpadea a ratos (arreglat a fines de setembre 2010, era un contacte flojo). Pero me h