blinker滑块控制RGB三色LED灯亮度和色彩-Arduino中文社区 - Powered by Discuz! Archiver

lwq1947 发表于 2019-8-9 13:41

blinker滑块控制RGB三色LED灯亮度和色彩

    目前关于blinker滑块应用的例程并不多,通过学习blinker滑块示例程序以及在奈何老师的指导下终于试成了用blinker滑块来控制单个LED灯的亮暗.照猫画虎近而
实现了用三个滑块控制RGB三色LED灯亮度和色彩.程序如下:

#define BLINKER_WIFI

#include <Blinker.h>

char auth[]="efca902628e4";
char ssid[]="*******";
char pswd[]="**********";

#define Slider_1 "SliderKey1"
#define Slider_2 "SliderKey2"
#define Slider_3 "SliderKey3"
BlinkerSlider Slider1(Slider_1);
BlinkerSlider Slider2(Slider_2);
BlinkerSlider Slider3(Slider_3);
int i=0,j=0,k=0;
void slider1_callback(int32_t value)
{
    BLINKER_LOG("get slider value: ", value);
    i=value;
}
void slider2_callback(int32_t value)
{
    BLINKER_LOG("get slider value: ", value);
    j=value;
}
void slider3_callback(int32_t value)
{
    BLINKER_LOG("get slider value: ", value);
    k=value;
}
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();
   
    uint32_t BlinkerTime = millis();
    Blinker.print(BlinkerTime);
    Blinker.print("millis", BlinkerTime);
   
}

void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
   pinMode(D3,OUTPUT);
   pinMode(D4,OUTPUT);
   pinMode(D5,OUTPUT);

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);

      Slider1.attach(slider1_callback);
      Slider2.attach(slider2_callback);
      Slider3.attach(slider3_callback);
}

void loop()
{

analogWrite(D3,i);//R
analogWrite(D4,j);//G
analogWrite(D5,k);//B
    Blinker.run();

}
    补充说明的是blinker app上各滑块数值大小为0-1000,我用的arduino板是wemos d1.PWM端口输出最大电压为3V不能达到蓝绿LED电压的要求同时RGB三色LED灯品种
功率不同所以要通8050三极管放大电流驱动RGB三色LED灯.此例程仅供参考不当之处恳请大家批评指正.

1431753885 发表于 2020-5-10 16:25

你好可以简单介绍工作原理码或者函数执行步骤,谢谢指教,附件是我自己总结的,帮忙看看是否正确

1431753885 发表于 2020-5-10 16:25

你好可以简单介绍工作原理码或者函数执行步骤,谢谢指教,附件是我自己总结的,帮忙看看是否正确

1431753885 发表于 2020-5-10 16:26

目标控制单个灯的明暗就够了

lwq1947 发表于 2020-5-10 16:58

1431753885 发表于 2020-5-10 16:26
目标控制单个灯的明暗就够了

控制单个灯的程序如下,你总结的附件在哪里我看不到.
#define BLINKER_WIFI

#include <Blinker.h>

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

#define Slider_1 "SliderKey1"

BlinkerSlider Slider1(Slider_1);

int i=0;
void slider1_callback(int32_t value)
{
    BLINKER_LOG("get slider value: ", value);
    i=value;
}

void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();
   
    uint32_t BlinkerTime = millis();
    Blinker.print(BlinkerTime);
    Blinker.print("millis", BlinkerTime);
   
}

void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
   pinMode(D3,OUTPUT);
   

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);

      Slider1.attach(slider1_callback);
   
}

void loop()
{

analogWrite(D3,i);//R

    Blinker.run();

minqqq 发表于 2020-5-12 19:41

这控制的led是什么型号?2812吗,用nodemcu可以吗

lwq1947 发表于 2020-5-12 19:56

本帖最后由 lwq1947 于 2020-5-12 19:57 编辑

minqqq 发表于 2020-5-12 19:41
这控制的led是什么型号?2812吗,用nodemcu可以吗
我用的是 3*1W RGB 灯珠.可以用nodemcu.但也都要通8050三极管放大来驱动RGB三色LED灯.

abc1428587033 发表于 2021-11-14 21:52

void slider1_callback(int32_t value)
{
    //digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    BLINKER_LOG("get slider value: ", value);
    i=value;

全局变量i,赋值不了啊,有懂这么方面的大佬吗

lwq1947 发表于 2021-11-15 07:29

本帖最后由 lwq1947 于 2021-11-15 07:38 编辑

abc1428587033 发表于 2021-11-14 21:52
void slider1_callback(int32_t value)
{
    //digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
blinker app中的数据键名要和程序中的一致才行.

rrBurgundy 发表于 2022-4-13 23:18

abc1428587033 发表于 2021-11-14 21:52
void slider1_callback(int32_t value)
{
    //digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));


你好,请问你解决了这个问题了吗?我也是在callback函数中把获得的value的值赋给全局变量,但是全局变量还是0.而且我在callback函数中写串口打印某个value值,串口也没有显示。但是在blinker的调试界面里面是可以看到组件正常获取了value的值。
页: [1]
查看完整版本: blinker滑块控制RGB三色LED灯亮度和色彩