blinker物联网教程——12、调色盘-Arduino爱好者 - Powered by Discuz!

Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11728|回复: 2

blinker物联网教程——12、调色盘

[复制链接]
发表于 2021-3-11 09:45 | 显示全部楼层 |阅读模式
本帖最后由 海神 于 2022-5-17 15:51 编辑

简介

Blinker APP中自带颜色插件,当添加颜色插件后,可以通过调整调色盘来控制实际应用中灯条对应的不同颜色。
本章节中我们使用Blinker APP配合可编程RGB灯条,实现通过颜色组件调色盘来控制RGB灯条不同的颜色。
tsp.png
普通的RGB灯直接是高低电平来点亮或者熄灭。而这种可编程RGB灯与普通的RGB灯有所区别,可编程RGB灯里面是有专门的驱动芯片的。我们想要实现每一颗灯珠指定点亮不同的颜色,需要程序按照灯的时序才能驱动,这样增加了程序的复杂性。但好在我们可以找到可编程RGB灯的程序库文件,我们安装好库文件后,就可以调用功能函数,就能实现点亮其灯珠,而不需要写底层的驱动程序。


硬件


软件

blinker app

代码

  1. #define BLINKER_WIFI

  2. #include <Blinker.h>

  3. char auth[] = "Your Device Secret Key";
  4. char ssid[] = "Your WiFi network SSID or name";
  5. char pswd[] = "Your WiFi network WPA password or WEP key";

  6. // Download Adafruit_NeoPixel library here:
  7. // https://github.com/adafruit/Adafruit_NeoPixel
  8. #include <Adafruit_NeoPixel.h>
  9. #ifdef __AVR__
  10.   #include <avr/power.h>
  11. #endif

  12. #define PIN            D8
  13. #define NUMPIXELS      6
  14. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

  15. #define RGB_1 "RGBKey"

  16. BlinkerRGB WS2812(RGB_1);

  17. void ws2812_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value)
  18. {
  19.     digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
  20.     BLINKER_LOG("R value: ", r_value);
  21.     BLINKER_LOG("G value: ", g_value);
  22.     BLINKER_LOG("B value: ", b_value);
  23.     BLINKER_LOG("Rrightness value: ", bright_value);

  24.     pixels.setBrightness(bright_value);

  25.     for(int i = 0; i < NUMPIXELS; i++){
  26.         pixels.setPixelColor(i, r_value, g_value, b_value);
  27.     }
  28.     pixels.show();
  29. }

  30. void setup()
  31. {
  32.     Serial.begin(115200);
  33.     BLINKER_DEBUG.stream(Serial);

  34.     pinMode(LED_BUILTIN, OUTPUT);
  35.     digitalWrite(LED_BUILTIN, LOW);

  36.     Blinker.begin(auth, ssid, pswd);

  37.     pixels.begin();

  38.     WS2812.attach(ws2812_callback);
  39. }

  40. void loop()
  41. {
  42.     Blinker.run();
  43. }
复制代码

在程序里我们用到了驱动ws2812灯带的库文件,所以在上传程序之前,我们需要安装相应的库文件
下载后解压文件夹放在arduinoIDE安装目录下的libraries下,如图

确认无误后,将程序上传至主板。


定制blinker软件界面

找到Blinker下方添加“颜色”控件,并点击添加,点击右上方的锁,解锁修改控件参数
tsp1.png tsp2.png
修改数据键名,键名需要与程序里定义的一致。这里我们将其取名为“RGBKey”,显示文本为“颜色拾取”
编辑好后,点击右上角的勾确认编辑结束。



硬件连接

1、扩展板堆叠在wifiduino主板上
2、在程序中我们定义的是6颗RGBled,但模块上只有3课RGBled,可以将两个灯条模块进行级联。1号模块的out接口(通过3P数据线)连接在2号模块的in接口中。然后将1号模块的in接口连接在传感器扩展板上的D8接口(程序中定义)中。
tsp33.png
观察现象

操作blinker app,通过拾取调色盘中的颜色,控制RGB灯的显示情况。
tsp3.png

进阶

以上实验我们可以调整灯带显示自己想要的不同颜色灯光,让调色盘更加生动适用,我们可以在此基础上给灯添加一些常用的模式,例如看书时我们需要一种适合于看书时的灯光,如睡觉时可能需要的一种较弱的呼吸灯光效果。
那么我们将blinker中再额外添加两个按键控件,这两个按键用来确认两种不同的光效,一种是阅读模式,一种是呼吸模式。
然后再加上一个按键用来做关闭灯光使用。

代码

  1. #define BLINKER_WIFI
  2. #include <Blinker.h>
  3. #include <Adafruit_NeoPixel.h>

  4. Adafruit_NeoPixel rgb_display_D8 = Adafruit_NeoPixel(6,D8,NEO_RGB + NEO_KHZ800);

  5. char auth[] = "48c0xxxxdd";
  6. char ssid[] = "mxxxxxun";
  7. char pswd[] = "cdxxxxx51";
  8. BlinkerRGB RGB1("RGBKey");
  9. void RGB1_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value) {
  10.   rgb_display_D8.setPixelColor((1)-1, ((r_value & 0xffffff) << 16) | ((g_value & 0xffffff) << 8) | b_value);
  11.   rgb_display_D8.setPixelColor((2)-1, ((r_value & 0xffffff) << 16) | ((g_value & 0xffffff) << 8) | b_value);
  12.   rgb_display_D8.setPixelColor((3)-1, ((r_value & 0xffffff) << 16) | ((g_value & 0xffffff) << 8) | b_value);
  13.   rgb_display_D8.setBrightness(bright_value);
  14. }
  15. uint32_t Wheel(byte WheelPos){
  16.   if(WheelPos < 85){
  17.     return rgb_display_D8.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  18.   }
  19.   else if(WheelPos < 170){
  20.     WheelPos -= 85;
  21.     return rgb_display_D8.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  22.   }
  23.   else{
  24.     WheelPos -= 170;return rgb_display_D8.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  25.   }
  26. }

  27. void rainbow(uint8_t wait){
  28.   uint16_t i, j;
  29.   for(j=0; j<256; j++){
  30.     for(i=0; i<rgb_display_D8.numPixels(); i++){
  31.       rgb_display_D8.setPixelColor(i, Wheel((i+j) & 255));
  32.     }
  33.     rgb_display_D8.show();
  34.     delay(wait);
  35.   }
  36. }

  37. BlinkerButton Button1("btn-abf");
  38. void Button1_callback(const String & state) {
  39.   if (state == "on") {
  40.     rainbow(20);
  41.     for(int i = 0; i < rgb_display_D8.numPixels(); i++){
  42.       rgb_display_D8.setPixelColor(i, Wheel(((i * 256 / rgb_display_D8.numPixels()) + 20) & 255));
  43.     }
  44.     rgb_display_D8.show();
  45.     rgb_display_D8.setBrightness(100);

  46.   }
  47. }
  48. BlinkerButton Button2("btn-abd");
  49. void Button2_callback(const String & state) {
  50.   if (state == "on") {
  51.     rgb_display_D8.setPixelColor((1)-1, 0xffcc00);
  52.     rgb_display_D8.setPixelColor((2)-1, 0xffcc33);
  53.     rgb_display_D8.setPixelColor((3)-1, 0xffcc33);
  54.     rgb_display_D8.setBrightness(100);

  55.   }
  56. }
  57. BlinkerButton Button3("btn-abe");
  58. void Button3_callback(const String & state) {
  59.   if (state == "on") {
  60.     rgb_display_D8.setBrightness(0);

  61.   }
  62. }

  63. void setup(){
  64.   Blinker.begin(auth,ssid,pswd);
  65.   rgb_display_D8.begin();
  66.   RGB1.attach(RGB1_callback);
  67.   Button1.attach(Button1_callback);
  68.   Button2.attach(Button2_callback);
  69.   Button3.attach(Button3_callback);
  70. }

  71. void loop(){
  72.   rgb_display_D8.show();
  73.   Blinker.run();

  74. }
复制代码



blinker软件界面定制

tsp4.png tsp5.png tsp6.png

所以完整界面
tsp7.png


操作并观察现象

tsp8.png


视频展示



blinker物联网教程——2、搭建编程环境
blinker物联网教程——3、主控硬件wifiduino
blinker物联网教程——4、控制开关灯
blinker物联网教程——5、认识传感器
blinker物联网教程——6、wifi智能插座
blinker物联网教程——7、室内温湿度计
blinker物联网教程——8、定时任务-定时震动器
blinker物联网教程——9、blinker语音识别-芝麻开门
blinker物联网教程——10、日照时间分析
blinker物联网教程——11、自动灌溉
blinker物联网教程——12、调色盘
blinker物联网教程——13、公园噪音监测
blinker物联网教程——14、智能停车场
blinker物联网教程——15、智能家居
blinker物联网教程——16、遥控机械臂
blinker物联网教程——17、防疫隔离门磁
blinker物联网教程——18、手机控制空调
blinker物联网教程——19、接入小度智能音箱
blinker物联网教程——20、语音氛围灯
blinker物联网教程——23、wifi智能小车
blinker物联网教程——24、智能宠物喂食器
发表于 2021-4-12 10:24 | 显示全部楼层
请发下这个灯条购买链接,谢谢。

点评

https://item.taobao.com/item.htm?id=618554695098&ali_trackid=2:mm_1757130109_2269650212_111271350394:1618194387_197_2133661383&union_lens=lensId:MAPI@1618194387@0b847698_3b7d_178c3e6d193_591d@01;recov  详情 回复 发表于 2021-4-12 10:27
 楼主| 发表于 2021-4-12 10:27 | 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|好玩手机游戏盒子|196体育|Arduino爱好者

GMT+8, 2023-9-30 11:12 , Processed in 0.082239 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表