En este video veremos como hacer una matriz de led neopixel, controlado con arduino por el puerto serial de la pc, aunque también se puede conectar un módulo bluetooth.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Materiales
Un Arduino nano
El Arduino Nano es una placa pequeña, completa y compatible con la placa de pruebas basada en el ATmega328 (Arduino Nano 3.x). Tiene más o menos la misma funcionalidad del Arduino Duemilanove, pero en un paquete diferente. Solo carece de un conector de alimentación de CC y funciona con un cable USB Mini-B en lugar de uno estándar.
Microcontrolador | ATmega328 |
Arquitectura | AVR |
Tensión de funcionamiento | 5 V |
Memoria flash | 32 KB de los cuales 2 KB utiliza el gestor de arranque |
SRAM | 2 KB |
Velocidad de reloj | 16 MHz |
Pines analógicos IN | 8 |
EEPROM | 1 KB |
Corriente CC por pines de E / S | 40 mA (pines de E / S) |
Voltaje de entrada | 7-12 V |
Pines de E / S digitales | 22 (6 de los cuales son PWM) |
Salida PWM | 6 |
El consumo de energía | 19 mA |
Tamaño de PCB | 18 x 45 mm |
Peso | 7 g |
Diagrama de pines
16 Led neopixel
Pin out del led noepixel WS2812B
Observesé que en el pin número 3 hay una pequeña muesca, tenerla en cuenta para determinar fácilmente el pinout del del led.
Diagrama eléctrico de conexión
Descripción pinout
- 1 Fuente de alimentación (VDD) 3.5 a 5.3 voltios
- 2 Salida de señal de datos de control (DOUT)
- 3 VSS Tierra
- 4 Entrada de señal de datos de control (DIN)
Los LED WS2812, también conocidos como NeoPixel, se utilizan principalmente en tiras LED y pantallas grandes. Lo especial de esto es que los LED individuales están conectados uno a uno. Cada LED se puede controlar individualmente, aunque solo se requieren tres cables. Esta es la fuente de alimentación con + y – y una línea de datos está disponible como la tercera línea. Con un microcontrolador, o placa de desarrollo como Arduino, todos los LED se pueden controlar a través de esta línea de datos.
Una buena biblioteca para los LED WS2812 está disponible en Adafruit. Allí, los LED se conocen como “NeoPixels”. Además, Adafruit también ofrece una página de información muy extensa y algunos bocetos sobre el tema de los neopíxeles. Para que los bocetos funcionen en esta guía, la biblioteca “Adafruit NeoPixel” debe instalarse de antemano en el software Arduino. Esto se puede encontrar con la función “Incluir biblioteca” en el software Arduino.
Circuito impreso
Descargar archivo gerber —> MATRIX NEOPIXEL
Pines machos
16 capacitores smd de 0,1 uF (104)
Un zócalo para el arduino
Código fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define PIN 12 //Pin 12 del arduino para el control de los led neopixel #define NUMPIXELS 16 // Números de NeoPixels están conectados al Arduino String cadena, datoRojo, datoVerde, datoAzul; int ledRojo, ledVerde, ledAzul; Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int retardo = 100; //Demora void setup() { Serial.begin(115200);//Velocidad del puerto serial del Arduino #if defined (__AVR_ATtiny85__) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif pixels.begin(); //Inicializa la biblioteca NeoPixel. } void loop() { //Leemos los caracteres que entran por puerto serial if (Serial.available()) { cadena = String(""); while (Serial.available()) { cadena = cadena + char(Serial.read()); delay(1); } partirCadena();//llama a la función partirCadena ledRojo = datoRojo.toInt();//convierte el valor recibido en un entero ledVerde = datoVerde.toInt();//convierte el valor recibido en un entero ledAzul = datoAzul.toInt();//convierte el valor recibido en un entero Serial.println(ledRojo);// muestra el valor en recibido en el terminal serial Serial.println(ledVerde);// muestra el valor en recibido en el terminal serial Serial.println(ledAzul);// muestra el valor en recibido en el terminal serial //Ciclo for irá encendiendo o canviando de color cada led for(int i=0;i<NUMPIXELS;i++){ // Toma valores RGB, desde 0,0,0 hasta 255,255,255 pixels.setPixelColor(i, pixels.Color(ledRojo,ledVerde,ledAzul)); pixels.show(); // Esto envía el color de píxel actualizado al hardware. delay(retardo); // retardo } } } void partirCadena() { datoRojo = cadena.substring(0,3); //Tomamos los primeros 3 caracteres de la cadena datoVerde = cadena.substring(3,6); //Tomamos del caracter 4 al 6 de la cadena datoAzul = cadena.substring(6,9); //Tomamos del caracter 7 al 9 de la cadena } |
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
PROYECTO RECOMENDADO