Gravity:数字RGB全彩LED模块

概述

Gravity:数字RGB全彩LED模块是一款可级联的RGB全彩单灯珠模块。与传统RGB全彩灯珠需要3根控制信号线,硬件占用资源多不同,该模块控制仅需一根信号线,符合Gravity-3P数字接口规范,配合DF各类扩展板,即插即用,可方便用于Arduinomicro:bitESP32LattePanda树莓派等各类主控平台。得益于其精心的设计,模块可方便地通过随产品附送的Gravity 3P数字传感器线多级串联成灯串,实现极低的单位长度耗电量,远超普通RGB全彩灯带的级联长度,为项目制作带来更多可能性。在使用扩展板5V 2A外部供电下,可级联一百多个模块,总长可达数十米。独立模块和标准接插件的设计,让灯串长度的增减更为简单灵活,无需裁剪与焊接,更适合项目的现场制作与搭建。 模块采用与全彩RGB灯带相同的高亮RGB全彩LED灯珠,在保持优秀显示效果的同时,完全兼容灯带所使用的驱动电路或程序,让用户可在灯带和模块级联灯串之间无缝转换,无需对已有项目程序作任何改动,跑马灯、闪烁、彩虹变换,甚至文字,字母,图片,动画等酷炫效果无缝转换实现。模块采用与全彩RGB灯带相同的高亮RGB全彩LED灯珠,在保持优秀显示效果的同时,完全兼容灯带所使用的驱动电路或程序,让用户可在灯带和模块级联灯串之间无缝转换,无需或仅需极少对已有项目程序进行改动,跑马灯、闪烁、彩虹变换,甚至文字,字母,图片,动画等酷炫效果无缝转换实现。

特性

应用场景

技术规格

接口说明

Gravity:RGB全彩LED模块 引脚说明

序号 标号 功能描述
1 + 电源正极(3.3~5.5V)
2 - 电源负极
3 DI 信号输入
4 DO 信号输出

引脚说明

Arduino使用教程

准备

连线图

DFR0605_connection_Arduino.png

样例代码

    #include <Adafruit_NeoPixel.h>

    #define PIN_LED 3     // Control signal, connect to DI of the LED
    #define NUM_LED 1     // Number of LEDs in a strip

    // Custom colour1: Yellow
    #define RED_VAL_1       255
    #define GREEN_VAL_1     255
    #define BLUE_VAL_1      0

    // Custom colour2: Purple
    #define RED_VAL_2       255
    #define GREEN_VAL_2     0
    #define BLUE_VAL_2      255

    // Custom colour3: Cyan
    #define RED_VAL_3       0
    #define GREEN_VAL_3     255
    #define BLUE_VAL_3      255

    // Custom colour4: White
    #define RED_VAL_4       255
    #define GREEN_VAL_4     255
    #define BLUE_VAL_4      255

    Adafruit_NeoPixel RGB_Strip = Adafruit_NeoPixel(NUM_LED, PIN_LED, NEO_GRB + NEO_KHZ800);

    void setup() {
      RGB_Strip.begin();
      RGB_Strip.show();
      RGB_Strip.setBrightness(128);    // Set brightness, 0-255 (darkest - brightest)
    }

    void loop() {

      colorWipe(RGB_Strip.Color(255, 0, 0), 1000);  // Red
      colorWipe(RGB_Strip.Color(0, 255, 0), 1000);  // Green
      colorWipe(RGB_Strip.Color(0, 0, 255), 1000);  // Blue

      colorWipe(RGB_Strip.Color(RED_VAL_1, GREEN_VAL_1, BLUE_VAL_1), 1000);   // Custom colour1: Yellow
      colorWipe(RGB_Strip.Color(RED_VAL_2, GREEN_VAL_2, BLUE_VAL_2), 1000);   // Custom colour2: Purple
      colorWipe(RGB_Strip.Color(RED_VAL_3, GREEN_VAL_3, BLUE_VAL_3), 1000);   // Custom colour3: Cyan
      colorWipe(RGB_Strip.Color(RED_VAL_4, GREEN_VAL_4, BLUE_VAL_4), 1000);   // Custom colour4: White

      rainbow(20);  // Rainbow
    }

    // Fill the dots one after the other with a color
    void colorWipe(uint32_t c, uint16_t wait) {
      for (uint16_t i = 0; i < RGB_Strip.numPixels(); i++) {
        RGB_Strip.setPixelColor(i, c);
        RGB_Strip.show();
        delay(wait);
      }
    }

    void rainbow(uint8_t wait) {
      uint16_t i, j;

      for (j = 0; j < 256; j++) {
        for (i = 0; i < RGB_Strip.numPixels(); i++) {
          RGB_Strip.setPixelColor(i, Wheel((i + j) & 255));
        }
        RGB_Strip.show();
        delay(wait);
      }
    }

    // Input a value 0 to 255 to get a color value.
    // The colours are a transition r - g - b - back to r.
    uint32_t Wheel(byte WheelPos) {
      if (WheelPos < 85) {
        return RGB_Strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
      } else if (WheelPos < 170) {
        WheelPos -= 85;
        return RGB_Strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
      } else {
        WheelPos -= 170;
        return RGB_Strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
      }
    }

结果

RGB_Strip.setBrightness(128); // Set brightness, 0-255 (darkest - brightest)

Mind+ 上传模式编程

准备

上述主控板Arduino UNO控制板micro:bit编程入门开发板+micro:mate多功能I/O扩展板二选一。

连线图

使用micro:bit时,需要将扩展板上右侧开关拨到“5V”。如果拨到“3V”模块虽然能点亮,但是亮度会降低,显示颜色与设定值有一定偏差,可级联的数量也会大大减少。

使用步骤

Mind+ Python模式编程(行空板)

Mind+Python模式为完整Python编程,因此需要能运行完整Python的主控板,此处以行空板为例说明

连接图

注意:PinPong当前版本(V0.5.2)仅支持同时使用一条灯带

操作步骤

1、下载及安装官网最新软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装

2、切换到“Python模式”。“扩展”中选择“官方库”中的“行空板”和“pinpong库”中的”pinpong初始化“和“WS2812 RGB灯”。切换模式和加载库的详细操作链接

3、进行编程

4、连接行空板,程序点击运行后,可在终端查看数据。行空板官方文档-行空板快速上手教程 (unihiker.com)

代码编程

以pinpong库为例,行空板官方文档-行空板快速上手教程 (unihiker.com)

#  -*- coding: UTF-8 -*-

# MindPlus
# Python
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from pinpong.board import NeoPixel
from pinpong.board import Board
import time


Board().begin()
np1 = NeoPixel(Pin((Pin.P21)),1)
np1.brightness(255)

while True:
    np1[0] = (0,0,255)
    time.sleep(1)
    np1[0] = (0,0,0)
    time.sleep(1)

应用实例

利用画图软件调色板显示特定的颜色

Arduino使用教程一节的示例程序可以看到,我们可以通过调用

RGB_Strip.Color(RED_VAL, GREEN_VAL, BLUE_VAL);

来配置RGB三种颜色的值RED_VAL, GREEN_VAL, BLUE_VAL,从而让LED显示特定的颜色,但是如何直观地知道到所需要颜色R、G、B的值呢?这可以通过操作系统(以WIN10为例)自带的画图软件实现这点(如下图),具体步骤如下:

模块级联

#define NUM_LED 1 // Number of LEDs in a strip

常见问题

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png Link DFRobot商城购买链接