RGB串珠串联(方形RGB串珠)
RGB灯介绍
WS2812是将控制电路和发光电路一体化的智能外部控制LED光源,其外形与5050的led灯珠相同,各珠子是一个像素点。各像素点的RGB3基色能够实现256级的亮度显示,能够生成167771216种颜色,扫描频率不低于400Hz/s,串行级联接口仅通过一条信号线完成数据接收和解码。在刷新率为30帧/秒的情况下,级联数为1024个以上,数据发送速率达到800Kbps,所产生的光的颜色高度一致,性值相对较高。
WS2812销概略图
引脚号码引脚名称说明1DO控制数据信号输出端2DI控制数据信号输入端3VCC控制电路电源正极4NC伪5VDDLED电源正极6VSS电源负极
数据序列图
0,1代码的高级时间:
T0H0码,高电平时间0.35us±150nsT0L0码,低电平时间0.8us±150nsT1H1码,高电平时间0.7us±150nsT1码,低电平时间0.6us±150nsREs低电平时间约50us?
TH+TL=1.25μs±600ns
时序图:
数据传输方式:
这里,D1是在MCU端发送的数据,D2、D3、D4是级联电路自动整形转发的数据。
24比特数据的构成:
这个按GRB的顺序发送数据。
安装关联库RGB LED
首先安装相关程序库。
sudo pip3 install rpi_ws281x adafruit-circuit-python-neo-pixelsudopython3-mpip-install-force-reinstalladafrit-blinkacircuitpython支持。x版本。
RGB LED和树莓派连接方法:
RGB LED 树莓派 VCC +5V GND GND DI D18 (GpIO1)
树莓派的D10、D12、D18或D21只有销能够驱动WS2812RGB灯。例1:点亮RGB
1个RGB实现灯的点亮。
#!/usr/bin/envpython#coDIng=utf-8import timeimport boardimport neopixel#定义RGB控制销是D10、D12、D18或D21pixel选项卡。pin = board.D18#串联RGB珠的数量,这里只点亮第一个numpixels=1#定义RGB数据顺序:RGB或者GRBCOLORORDER=neopixel。GRBpixels = neopixel.neopixel(pixel_pin, num_pixels, brightness=0.3, auto_write=False, pixel_ORDER=COLOR_ORDER#1第RGB点亮灯,显示红色pixels。fill((255, 0, 0))pixels.show()程序必须在python3作为root执行。
效果图:
例2:RGB动态显示
实现红、绿、蓝、虹环的示例。
#!/usr/bin/envpython#coDIng=utf-8import timeimport boardimport neopixel#定义RGB控制销是D10、D12、D18或D21pixel选项卡。pin = board.D18#串联RGB珠的数量numpixels=3#定义RGB数据顺序:RGB或者GRBCOLORORDER=neopixel。GRBpixels = neopixel.neopixel(pixel_pin, num_pixels, brightness=0.3, auto_write=False, pixel_ORDER=COLOR_ORDER)def wheel(pos): if pos lt; 0 or pos gt; 255: r = g = b = 0 elif pos lt; 85: r = int(pos * 3) g = int(255 – pos * 3) b = 0 elif pos lt; 170: pos -= 85 r = int(255 – pos * 3) g = 0 b = int(pos * 3) else: pos -= 170 r = 0 g = int(pos * 3) b = int(255 – pos * 3) return (r, g, b) if COLOR_ORDER in (neopixel.RGB, neopixel.GRB) else (r, g, b, 0)def rainbow(wait): for j in range(255): for i in range(num_pixels): pixel_index = (i * 256 //num_pixels) + j pixelsi = wheel(pixel_index 255) pixels.show() time.sleep(wait)while True: pixels.fill(255,0)#红色pixels。show() time.sllt;ickeygt;eep(1) pixels.fill((0,255,0)#绿pixels。show() time.sllt;ickeygt;eep(1) pixels.fill((0,0,255)#蓝色pixels。show() time.sllt;ickeygt;eep(1)rainbow(0.01)#彩虹程序需要在python3作为root来执行。
效果图:
附件:neopixel库的官方文档:AdafluitcircuitpythonneopixelLibrary