您肯定已经看到制造商不止一次展示使用这些 RGB LED 组的项目。 这些条带的应用范围从可以根据一些外部事件改变颜色的简单装饰到用于灯光比赛等等。 这就是为什么在本文中,我们将介绍您应该了解的所有最重要的信息 新像素 以及如何集成和 使用 Arduino 进行控制.
什么是新像素?
Neopixel 只不过是 Adafruit Industries 的注册商标. 但是,这些组件的通用术语是可单独寻址的 RGB LED(例如:SK6812、WS2811、WS2812...)。 换句话说,它是一个带有这些彩色灯的逻辑电路,它将作为控制信号的结果,显示不同的颜色,执行某些上电序列等。
重要的是您知道构成矩阵的每个 RGB LED 都使用 4 个引脚或连接器,所以 你的针脚 是:
- 5V:高电平供电。
- GND:电源低电平或地。
- DIN:接收颜色信息的引脚。
- DO:pin 发送颜色信息。
除此之外,它还集成了一个带有存储器的电子电路,能够 存储 3 个字节, 每种颜色一个。 有关更多信息,您可以阅读您购买的特定型号的数据表或文档,因为可能存在差异。
哪里可以买到 Neopixel
如果你在看 购买新像素 或您的 DIY 项目的类似元素,您可以在一些专门的电子商店或亚马逊上找到它们。 在这方面的一些建议是:
将 Neopixel 与 Arduino UNO
至 将 Neopixel 或任何其他品牌与您的 Arduino 板集成 并开始在 Arduino IDE 中创建代码以控制颜色和照明,您将需要:
- 牌匾 Arduino UNO 版本3
- Neopixel 型 LED 矩阵
- 470阻力 Ω
- 1000 µF 电解电容 ≥6.3V。
- 面包板
- 连接电缆
- 5V at 1A 电源和连接器
Neopixel 矩阵与 Arduino UNO 如上图所示。 连接后,接下来就是从 Arduino IDE 代码. 在这种情况下,您必须使用一个名为 Adafruit NeoPixel,您可以从此处下载,并开始测试和修改它附带的示例。 例如,你可以从 Simple 开始,你会得到类似的东西:
#include <Adafruit_NeoPixel.h> //Incluir la biblioteca #define PIN 6 //Pin en el que has conectado el Neopixel // Número de píxeles encadenados (en este caso 21, pero puedes modificarlo según necesites) #define NUMPIXELS 21 // Inicializamos el objeto "pixeles" Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // Argumento 1 = Número de pixeles encadenados // Argumento 2 = Número del pin de Arduino utilizado con pin de datos // Argumento 3 = Banderas de tipo de pixel: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) // NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products) #define DELAYVAL 500 //timpo de espera en ms void setup() { pixels.begin(); // Inicializamos el objeto "pixeles" } void loop() { pixels.clear(); // Apagamos todos los LEDs // El primer pixel de una cadena es el #0, el segundo es el #1, y así sucesivamente hasta el n-1 for(int i=0; i<NUMPIXELS; i++) { // Modificamos el LED #i, encendiendolo con un color verde moderadamente brillante pixels.setPixelColor(i, pixels.Color(0, 150, 0)); pixels.show(); // Mandamos todos los colores con la actualización hecha delay(DELAYVAL); // Pausa antes de modificar el color del siguiente LED } }