Publicado el

Tutorial de NeoPixel con Arduino.

[nextpage title=»Introducción a NeoPixel»]
La integración de leds en un proyecto electrónico a veces puede ser un nido de cables así como un código revuelto. Con la llegada de componentes como NeoPixel trajeron a resolver esto, el trabajo pesado y divertido será en el código, con esto nos podemos centrar en la aplicación.
LEDs RGB (rojo, verde y azul) están integrados junto con un chip driver en una pequeña superficie a través de un cable. NeoPixel viene de diferentes formas y tamaño, en esta ocasión nos enfocaremos en el aro de 12 Leds.
NeoPixels no se iluminan por si solos, necesitan de un microcontrolador para que estos funcionen. En este tutorial usaremos código en Arduino para empezar con NeoPixel, una vez que nos familiaricemos con el código podemos crear nuestros propios efectos y animaciones.
Como nota importante NeoPixels funciona para la mayoría de microcontroladores pero se le dificulta cuando trabaja con plataformas como Raspberry Pi, pues la señal de control es muy estricta.

[nextpage title=»Materiales»]
Necesitamos de estos materiales para este tutorial:

[nextpage title=»Cableado»]
Conectemos nuestro Arduino UNO al ordenador mediante el cable USB. Identifiquemos en el NeoPixel la entrada que dice “Data Input”, esta entrada la conectamos a cualquier pin digital del arduino, en este tutorial lo pondremos en el 7. Pondremos una resistencia de 470 Ohms entre el pin digital y el “Data Input”.
Los otras dos entradas restantes son para “Ground” y “5V  DC”, estas las conectamos respectivamente en el Arduino UNO.
leds-cableado-neopixel
Como podemos ver las conexiones son simples, esta es una de las grandes ventajas que tiene Neopixel. Hay que tener mucho cuidado y asegurarse que conectemos el pin digital con “Data Input.  Existen otras formas de Neopixel y están tienen etiquetas como “DI” o “DIN” que significa Data Input.
[nextpage title=»Instalación de la librería de Arduino»]
Controlar NeoPixel a mano es un poco desafiante, así que NeoPixel nos proporciona una librería que hace la programación mas fácil y divertida. Esta librería funciona con la mayoría de tarjetas de Arduino como el UNO, Mega, Micro, Leonardo, etc.
descargar-libreria-neopizel-github
Instalaremos la librería de Arduino de la forma clásica. Lo primero que tenemos que hacer es descargar la librería desde GitHub.

  1. Descomprimir el archivo ZIP
  2. Cambiar el nombre de la carpeta por Adafruit_NeoPixel
  3. Copiar la carpeta a /Arduino/Libraries. En caso de Windows la carpeta de Arduino se encuentra en “Mis Documentos” y en MAC en “Documentos”.
  4. Reiniciamos el IDE de Arduino si lo tenemos abierto

instalacion-libreria-neopixel
usando-libreria-neopixel-arduino
[nextpage title=»Como usar la librería»]
Abrimos el IDE de Arduino y copiamos este codigo en el editor de texto de nuestro IDE

// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1
#define PIN 7
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 12
// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 100; // delay for half a second
void setup() {
// This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
#if defined (__AVR_ATtiny85__)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
// End of trinket special code
pixels.begin(); // This initializes the NeoPixel library.
}
void loop() {
// For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.
for(int i=0;i<NUMPIXELS;i++){
// pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
pixels.setPixelColor(i, pixels.Color(23,161,165)); // Moderately bright green color.
pixels.show(); // This sends the updated pixel color to the hardware.
delay(delayval); // Delay for a period of time (in milliseconds).
}
}

El código empieza con este encabezado:

#include <Adafruit_NeoPixel.h>

La siguiente línea de código es para decirle a nuestra programa que pin digital utilizaremos.

#define PIN            7

En caso de usar otro pin digital, simplemente cambiamos el numero 7 por el pin que usemos.
Inicializamos nuestra librería

pixels.begin();

Con la función setPixelColor ponemos el color a un pixel. Pixels.Color toma valores RGB que va desde 0 hasta 255.

pixels.setPixelColor(i, pixels.Color(23,161,165));

Envía el pixel actualizado a nuestro hardware

pixels.show();

Cambiamos el tiempo del retraso en milisegundos.

int delayval = 100;

neopixel-arduino-2
[nextpage title=»NeoPixel Arcoiris»]
Con el código anterior todos los pixeles serán de un solo color, con esta función que hicimos cada pixel tendrá un color diferente.
Cambiamos esta línea de código:

pixels.setPixelColor(i, pixels.Color(23,161,165));

y sustituimos por esta:

pixels.setPixelColor(i, rainbow());

Y finalmente agregamos nuestra función rainbow al final del código:

uint32_t rainbow(){
return pixels.Color(random(0,255), random(0,255), random(0,255));
}

Nos apoyamos de la función random, que lo que hace es seleccionar un numero aleatorio entre el 0 y el 255.
[nextpage title=»NeoPixel en Acción»]
Mostramos como se ve nuestra primer programa que hicimos, todos los pixeles son de un solo color.

Este es nuestro segundo programa donde hicimos la función arcoiris, cada pixel es de diferente color.

Con esto llegamos al final de nuestro tutorial, estas son las bases para trabajar con NeoPixel. Como vimos podemos agregar nuestros propios efectos, en este caso hicimos un efecto arcoíris, ya depende de nuestras habilidades con programación para hacer infinidad de animaciones. A divertirse!

Compartir ahora:
Deja una respuesta