Llum amb

NeoPixel

Introducció

NeoPixel és un sistema d'il·luminació mitjançant el qual, de forma molt senzilla, es poden crear escenes de llum i jocs amb infinitat de colors diferents .Es tracta d'una tecnologia basada en RGB, amb la particularitat que es pot accedir a cada Led per a variar el seu color de manera individual. Aquesta característica s'aconsegueix incloent un controlador al costat de cada Led, a més d'un sistema de transmissió d'informació entre controladors. Recorda que en les tires RGB tradicionals només és possible canviar el color de tot el conjunt alhora.

Combinant NeoPixel amb elements de control com bluetooth, Wifi o comandaments ANAR, pots programar i controlar escenes de llum per a infinitat de situacions diferents. D'altra banda, les aplicacions lúdiques són inimaginables. Un exemple molt divertit i extremadament enginyós són les ja famoses carreres de llum (*Open Led *Race):

En l'article Carrera Led (Led race). Primeras 3 versiones en orden creciente de dificultad, s'explica com programar la teva pròpia carrera led, dóna-li un cop d'ull!

Neopixel es pot trobar també amb el nom de WS2811, WS2812 i WS2812B, sent l'últim el mes modern, i es presenta en diferents formats, sent els mes comuns: matrius o panells, tires i anells.

Connexió

NeoPixel requereix una alimentació de 5V en corrent continu (la mateixa que dóna un USB, per exemple). A part d'aquest valor, que és constant, és molt important tenir en compte que la intensitat consumida és un paràmetre molt variable en aquesta tecnologia. La intensitat depèn, d'una banda, del nombre de Leds que formin el NeoPixel. Però atenció, perquè a més, la intensitat consumida per cada Led depèn del color amb el qual estigui brillant. Podem dir que cada Led consumeix entorn de 20 mA de mitjana, però pot arribar a demandar 60 mA. per a un color blanc intens (color de màxim consum).

Si tenim 60 Leds, per exemple, la intensitat necessària serà de 1200 mA per a un consum mitjà. En definitiva, això vol dir que NO podem alimentar els NeoPixel amb Arduino tret que es tracti d'un dispositiu molt petit, ja que la font d'alimentació d'Arduino ofereix uns 400 mA com a màxim en règim de funcionament sense sobrecàrrega i si no té altres consums.

A la imatge es mostra l'esquema de connexió per a controlar una tira NeoPixel mitjançant el pin 2 d'Arduino. Cal destacar dues qüestions:

  • Resulta convenient utilitzar una resistència de 470 Ohms en el cable de senyal de comandament.
  • És aconsellable unir el 0V de la font d'alimentació externa amb el 0V (GND) de l'Arduino.

Programació amb ArduinoBlocks

ArduinoBlocks disposa d'un apartat (NeoPixel) en el qual s'inclouen els blocs necessaris per a controlar tots aquests dispositius. Veurem com.

Definició del tipus de NeoPixel utilitzat (inicialització)

Aquest bloc es col·loca en l'apartat Inicialitzar amb l'objectiu de definir 4 paràmetres. Els dos primers començant per l'esquerra del bloc, tenen a veure amb les característiques constructives del NeoPixel que utilitzaràs. Actualment els GRB a 800 kHz són els mes comuns. Si necessites una configuració diferent, ho notaràs perquè no s'il·luminarà amb els colors que estàs programant.

En la part dreta del bloc trobem els altres dos paràmetres fonamentals a l'hora d'establir la inicialització de paràmetres. Has d'indicar el nombre de píxels (Leds) que formen el teu NeoPixel i el pin de Arduino des del qual el controlaràs.

En el bloc d'inicialització pres com a exemple en la imatge anterior, es defineix un conjunt de 60 Leds que es controlen des del pin 2 de Arduino.

Activació de Leds de manera individual

Mitjançant els següents blocs es determina quin Led es vol il·luminar i amb quin color. Com veiem en el segon bloc mostrat, es disposa d'un desplegable en el qual seleccionar colors predefinits, estalviant-nos així l'haver d'introduir el codi corresponent a cada color, però es poden utilitzar moltíssims mes.

Amb els blocs mostrats a continuació es realitza el mateix procés però en una matriu. Pots seleccionar la grandària de la matriu disponible, el Led que vols il·luminar dins de la matriu i el color amb què s'il·luminarà.

És important destacar que, perquè s'il·lumini la configuració realitzada, cal acabar incloent el bloc Mostrar:

A més, per a apagar els Leds és necessari utilitzar el bloc Netejar:

Creació gràfica d'escenes en matrius

Mitjançant el bloc Establir dades, es poden crear patrons personalitzats en matrius NeoPixel, de la mateixa manera que es realitzen en les matrius de leds clàssiques (no RGB).

En aquest cas, fent clic dret sobre el bloc, ens apareix un desplegable. Punxant en ajuda s'obre una nova finestra en la qual podem crear (amb el ratolí de l'ordinador) un mapa de bits amb el patró a mostrar en la matriu NeoPixel:

Com passava amb les matrius de Led clàssiques, aquesta funció et permet crear elements personalitzats, amb la diferència que ara pots seleccionar el color de cada píxel:

Per a acabar, còpia el mapa de bits generat sota la imatge, torna a l'editor de ArduinoBlocks i enganxa'l en l'espai en tou del bloc Establir dades:

Cada vegada que insereixis aquest bloc en el codi, t'apareixerà en la matriu la imatge dissenyada. Pots crear diferents blocs personalitzats incloent codis diferents en cadascun.

Estratègies de programació per a l'activació simultània de Leds

Resulta molt útil usar blocs Comptar amb per a activar molts Leds alhora, sense haver d'introduir un bloc per cada Led. Un exemple, tenint en compte el cablejat proposat, seria el següent:

En el programa anterior s'il·luminen en vermell alhora els 60 Leds d'un NeoPixel. Fixa't en què al final s'inclou el bloc Mostrar. Pots triar quants Leds s'il·luminen canviant els números que marquen el començament (1 en aquest cas) i la fi (60).

Si el que vols és que s'il·luminin un a un, pots incloure un bloc Esperar:

La velocitat amb què s'il·luminin nous Leds depèn del temps establert en el bloc Esperar. A més, en l'últim requadre tens l'opció de seleccionar quants Leds s'aniran il·luminant de forma simultània (de 1, de 5, etc.).

Finalment, si el que vols és que quan s'il·lumini un Led s'apagui l'anterior, llavors has d'afegir el bloc Netejar abans d'il·luminar un nou element, perquè apagui l'anterior:

En el següent vídeo vam mostrar com es veuen els tres programes exposats anteriorment, juntament amb un exemple d'un programa mes avançat.


Traducció de l'article original realitzat per Pedro David Domingo de Didactrónica:

http://arduinoblocks.didactronica.com/2019/04/neopixe/

Moltes gràcies per compartir!