【雕爷学编程】Arduino动手做(86)---4*4位 WS2812 全彩模块
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十六:WS2812B-4*4位 RGB LED 全彩驱动16位彩灯开发板模块
WS2812B
是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。
主要特点
● 智能反接保护,电源反接不会损坏IC。
● IC控制电路与LED点光源公用一个电源。
● 控制电路与RGB芯片集成在一个5050封装的元器件中,构成一个完整的外控像素点。
● 内置信号整形电路,任何一个像素点收到信号后经过波形整形再输出,保证线路波形畸变不会累加。
● 内置上电复位和掉电复位电路。
● 每个像素点的三基色颜色可实现256级亮度显示,完成16777216种颜色的全真色彩显示,扫描频率不低于400Hz/s。
● 串行级联接口,能通过一根信号线完成数据的接收与解码。
● 任意两点传传输距离在不超过5米时无需增加任何电路。
● 当刷新速率30帧/秒时,级联数不小于1024点。
● 数据发送速度可达800Kbps。
● 光的颜色高度一致,性价比高。
WS2812B-4*4位 RGB LED 全彩驱动16位彩灯开发板模块
5050高亮LED,内置控制芯片,仅需1个IO口即可控制多个LED
芯片内置整形电路,信号畸变不会累计,稳定显示
三基色256级亮度调剂,16万色真彩显示效果,扫描频率不低于400Hz/S
串行连级接口,能通过一根信号线完成数据的接收与解码
刷新速率30帧/秒时,低速连级模式连级数不小于512点
数据收发速度最高可达800Kbps
高亮LED,光色亮度一致性高
两端有l联级接口,可以直接插接
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十六: WS2812B-4*4位 RGB LED 全彩驱动16位彩灯开发板
项目一,点亮矩阵LED模块,循环快闪绿色光
实验开源代码
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验八十九: WS2812B-4*4位 RGB LED 全彩驱动16位彩灯开发板 项目一,点亮矩阵LED模块,循环快闪绿色光 */ #include <Adafruit_NeoPixel.h> #define PIN 7 #define MAX_LED 16 #define ADD true #define SUB false int val = 0; boolean stat = ADD; Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_RGB + NEO_KHZ800 ); void setup(){ strip.begin(); strip.show(); } void loop(){ uint8_t i,a=0; uint32_t color = strip.Color(255, 100, 0); while (a<17) { for (i=0;i<16;i++) { if (i==a) strip.setPixelColor(i, color); else strip.setPixelColor(i, 0); } strip.show(); delay(20); a++; } } |
实验场景图
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验八十六: WS2812B-4*4位 RGB LED 全彩驱动16位彩灯开发板 项目二,依次点亮不同色彩灯 */ #include <FastLED.h> #define LED_PIN 7 #define NUM_LEDS 16 CRGB leds[NUM_LEDS]; void setup() { FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); } void loop() { leds[0] = CRGB(255, 0, 0); FastLED.show(); delay(500); leds[1] = CRGB(0, 255, 0); FastLED.show(); delay(500); leds[2] = CRGB(0, 0, 255); FastLED.show(); delay(500); leds[3] = CRGB(150, 0, 255); FastLED.show(); delay(500); leds[4] = CRGB(255, 200, 20); FastLED.show(); delay(500); leds[5] = CRGB(85, 60, 180); FastLED.show(); delay(500); leds[6] = CRGB(150, 255, 20); FastLED.show(); delay(500); leds[7] = CRGB(0, 50, 255); FastLED.show(); delay(500); leds[8] = CRGB(255, 255, 0); FastLED.show(); delay(500); leds[9] = CRGB(20, 25, 255); FastLED.show(); delay(500); leds[10] = CRGB(255, 0, 20); FastLED.show(); delay(500); leds[11] = CRGB(50, 0, 55); FastLED.show(); delay(500); leds[12] = CRGB(55, 200, 20); FastLED.show(); delay(500); leds[13] = CRGB(85, 160, 180); FastLED.show(); delay(500); leds[14] = CRGB(20, 255, 0); FastLED.show(); delay(500); leds[15] = CRGB(150, 150, 60); FastLED.show(); delay(500); } |
实验场景图
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验八十六: WS2812B-4*4位 RGB LED 全彩驱动16位彩灯开发板 项目之三,简单渐变彩虹色 */ #include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define PIN 7 #define NUMPIXELS 16 float RDE1=0; float GRE1=0; float BLE1=0; Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 500; void setup() { #if defined (__AVR_ATtiny85__) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif pixels.begin(); } void loop() { GRE1=0; for ( int o=0;o<255;o++){ RDE1=255; GRE1=GRE1+1; BLE1=0; for ( int l=0;l<NUMPIXELS;l++){ pixels.setPixelColor(l, pixels.Color(RDE1,GRE1,BLE1)); pixels.show(); } delay(20); } RDE1=255; for ( int p=0;p<255;p++){ RDE1=RDE1-1; GRE1=255; BLE1=0; for ( int l=0;l<NUMPIXELS;l++){ pixels.setPixelColor(l, pixels.Color(RDE1,GRE1,BLE1)); pixels.show(); } delay(20); } BLE1=0; for ( int k=0;k<255;k++){ RDE1=0; GRE1=255; BLE1=BLE1+1; for ( int l=0;l<NUMPIXELS;l++){ pixels.setPixelColor(l, pixels.Color(RDE1,GRE1,BLE1)); pixels.show(); } delay(20); } GRE1=255; for ( int k=0;k<255;k++){ RDE1=0; GRE1=GRE1-1; BLE1=255; for ( int l=0;l<NUMPIXELS;l++){ pixels.setPixelColor(l, pixels.Color(RDE1,GRE1,BLE1)); pixels.show(); } delay(20); } RDE1=0; for ( int h=0;h<150;h++){ RDE1=RDE1+1; GRE1=0; BLE1=255; for ( int l=0;l<NUMPIXELS;l++){ pixels.setPixelColor(l, pixels.Color(RDE1,GRE1,BLE1)); pixels.show(); } delay(20); } } |
实验开源仿真编程(Linkboy V4.5)
实验开源图形编程(Mind+、Mixly、编玩边学)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性