Luces de cores – IDE
Aquí tes algúns exemplos para traballar cos LEDs RGB. Tes información sobre a conexión e montaxe nesta páxina.
Así o anunciamos en twitter:
Xa teño LEDs RGB!! Na páxina https://t.co/2cUJy6ivcY podes ver como conectalos e nesta outra https://t.co/Cql4kUmRbt explicamos como funcionan e propoñemos algunhas prácticas pic.twitter.com/vJPyjZ7J6S
— mClon (@mClonRobot) 3 de novembro de 2018
Como funcionan
Un LED RGB ( R= red, vermello, G= green, verde e B= blue, azul) é un LED que incorpora tres LEDs no mesmo encapsulado, de xeito que se poden formar miles de cores axustando de maneira individual a intensidade de cada LED. Cada LED RGB neopixel inclúe estes 3 LEDs xunto a un circuíto controlador responsable de recibir os datos do LED anterior e envialos ao seguinte, de xeito que todos os LEDs se controlan desde unha soa liña de datos. No caso do mClon, a tira de LEDs conectarémola no pin 13.
Dependendo da intensidade de cada un dos LEDs RGB obteremos diferentes cores, como podes ver nos seguintes exemplos:
|
|
Tomando outros valores podemos conseguir un total de 256 x 256 x 256 = 16.777.216 cores distintas.
Ollo! Os LEDs RGB neopixel que eliximos para o mClon non son realmente RGB, senón GRB. É dicir, o vermello e o verde están cambiados. Por exemplo, se queres a cor verde debes poñer 255,0,0 e se queres vermello 0,255,0.
Programación de 2 LEDs
O primeiro que debemos facer é incluír a librería Adafruit_NeoPixel (Vai a Sketch -> Incluír biblioteca -> Xestionar bibliotecas – > busca “NeoPixel” -> Instalar)
O led esquerdo será o 0 e o led dereito será o 1. Para asignar as cores deberás introducir os valores GRB, desde 0 ata 255.
// Librería #include <Adafruit_NeoPixel.h> // Para un conxunto de leds o primeiro é o 0, o seguinte o 1, e así sucesivamente. // pixels.Color toma valores RGB, desde 0,0,0 hasta 255,255,255 // no mClon verde e vermello van cambiados (GRB) // Declaración de variables #define PIN 13 // Pin da tira de Leds #define NUMPIXELS 2 // Número de Leds Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); //define o obxecto pixels // Configuración void setup() { pixels.begin(); // Inicializa a libreria NeoPixel. } // Bucle void loop() { //acender os leds de cor vermella (GRB) pixels.setPixelColor(0, pixels.Color(0,255,0)); // Asigno vermello ao led esquerdo pixels.setPixelColor(1, pixels.Color(0,255,0)); // Asigno vermello ao led dereito pixels.show(); // Actualiza os leds. delay(500); //acender os leds de cor verde (GRB) pixels.setPixelColor(0, pixels.Color(255,0,0)); // Asigno verde ao led esquerdo pixels.setPixelColor(1, pixels.Color(255,0,0)); // Asigno verde ao led dereito pixels.show(); // Actualiza os leds. delay(500); //apagar os leds pixels.setPixelColor(0, pixels.Color(0,0,0)); // Apago o led esquerdo pixels.setPixelColor(1, pixels.Color(0,0,0)); // Apago o led dereito pixels.show(); // Actualiza os led. delay(1000); }
Podemos facer que os LEDs alumeen con cores aleatorias. Habería que crear unhas variables R, G e B e asignarlles uns valores ao chou utilizando a función random. Segundo o tempo de espera que poñas cambiará de cor con maior ou menor frecuencia.
void loop() { int R=random(0,255); int G=random(0, 255); int B=random(0, 255); //acender os leds dunha cor ao chou (GRB) pixels.setPixelColor(0, pixels.Color(G,R,B)); // Asigno vermello ao led esquerdo pixels.setPixelColor(1, pixels.Color(G,R,B)); // Asigno vermello ao led dereito pixels.show(); // Actualiza os leds. delay(500); }
Cando programes os LEDS RGB ten en conta que os LEDs quedarán sempre no último estado que adquiran. Se queres apagalos terás que indicalo no programa.
Programación de tiras e aneis de LEDs
Se temos moitos leds sería moi tedioso ir indicando o que debe facer cada led un por un, polo que usaremos a instrución for(inicio,condición,modificador) { proceso } para dar as ordes.
O primeiro que debemos indicar é cantos leds temos e onde están conectados. No noso exemplo temos 8 leds conectados no pin 13. Despois declaramos as variables e configuramos igual que no programa anterior.
#define PIN 13 // Pin da tira de Leds #define NUMPIXELS 8 // Número de Leds
Para programar utilizamos a instrución for. Neste exemplo iremos acendendo os leds de forma consecutiva e despois apagarémolos tamén de forma consecutiva, no mesmo sentido.
void loop() { // Acender os leds consecutivamente dunha cor determinada for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(10,20,100)); pixels.show(); delay(200); // espera para o acendido de cada led. } // Apargar os leds consecutivamente for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(0,0,0)); pixels.show(); delay(200); } }
Prácticas 2 leds
- Modifica o anterior programa para que as cores do LED RGB esquerdo e do dereito cambien de forma independente.
- No programa de seguir unha liña, fai que cando o mClon vaia dentro da liña os dous LEDs estean apagados, cando saia da liña pola dereita o LED dereito se poña vermello, cando saia pola esquerda se poña vermello o LED esquerdo, e cando o robot estea cos dous sensores fóra da liña se poñan os dous LEDs vermellos.
Prácticas tira de leds
- Fai que os leds se vaian acendendo consecutivamente nun sentido e despois apagándose en sentido contrario.
- Fai que cada led se acenda e apague de forma consecutiva, simulando “o coche fantástico”.