查看: 595|回复: 4

[分享] blinker控制RGB LED示例

[复制链接]
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2019-9-9 23:46 | 显示全部楼层 |阅读模式
    这是一个RGB控制示例,帮助大家更好的编写灯控程序。

    注意:只有changeLight()函数在改变灯的状态,如果你是用的其他灯,只用在setup中进行初始化,在changeLight中改变灯的状态即可。

    kittenblock中小学创客名师推荐的图形化编程软件

    
    
    #define BLINKER_WIFI
    
    #include <Blinker.h>
    
    char auth[] = "xxxxxxxxxxx";
    char ssid[] = "xxxxx";
    char pswd[] = "xxxxxxxxxx";
    
    #define RGB_1 "RGBKey"
    
    BlinkerRGB RGB1(RGB_1);
    
    bool switch_state = false;
    
    int red=0;
    int green=0;
    int blue=0;
    int bright=0;
    
    void rgb1_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value)
    {
        digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
        red=r_value;
        green=g_value;
        blue=b_value;
        bright=bright_value;
        changeLight();
        BLINKER_LOG("R value: ", r_value);
        BLINKER_LOG("G value: ", g_value);
        BLINKER_LOG("B value: ", b_value);
        BLINKER_LOG("Rrightness value: ", bright_value);
    }
    
    void switch_callback(const String & state)
    {
        BLINKER_LOG("get switch state: ", state);
    
        if (state == BLINKER_CMD_ON) {
            switch_state = true;
            bright=255;
            changeLight();
            BUILTIN_SWITCH.print("on");
        }
        else if (state == BLINKER_CMD_OFF) {
            switch_state = false;
            bright=0;
            changeLight();
            digitalWrite(LED_BUILTIN, LOW);
    
            BUILTIN_SWITCH.print("off");
        }
    }
    
    void heartbeat()
    {
        if (switch_state) BUILTIN_SWITCH.print("on");
        else BUILTIN_SWITCH.print("off");
        RGB1.brightness(bright);
        RGB1.print(red, green, blue);
    }
    
    
    void dataRead(const String & data)
    {
        BLINKER_LOG("Blinker readString: ", data);    
        uint32_t BlinkerTime = millis();    
        Blinker.print("millis", BlinkerTime);
    }
    
    void changeLight(){
        int red_temp=map(red*bright/255,0,255,1023,0);
        int green_temp= map(green*bright/255,0,255,1023,0);
        int blue_temp= map(blue*bright/255,0,255,1023,0);
        BLINKER_LOG("red_temp: ", red_temp);
        BLINKER_LOG("green_temp: ", green_temp);
        BLINKER_LOG("blue_temp: ", blue_temp);
        analogWrite(D8,red_temp);
        analogWrite(D9,green_temp);
        analogWrite(D10,blue_temp);
    }
    
    void setup()
    {
        Serial.begin(115200);
        BLINKER_DEBUG.stream(Serial);
    
        pinMode(LED_BUILTIN, OUTPUT);
        digitalWrite(LED_BUILTIN, LOW);
    
        Blinker.begin(auth, ssid, pswd);
        Blinker.attachData(dataRead);
        Blinker.attachHeartbeat(heartbeat);
        BUILTIN_SWITCH.attach(switch_callback);
        
        RGB1.attach(rgb1_callback);
    }
    
    void loop()
    {
        Blinker.run();
    }
    如果你觉得以上内容帮到了你,你可以打赏支持作者
  • TA的每日心情
    开心
    2019-9-29 18:54
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2019-9-12 09:58 | 显示全部楼层
    可以分享一下blinker软件中界面的设置吗?谢谢啦
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2019-9-12 10:21 | 显示全部楼层
    寝室咯 发表于 2019-9-12 09:58
    可以分享一下blinker软件中界面的设置吗?谢谢啦

    就是一个颜色拾取组件,没了,不过这个程序是2.2.7使用的,不知道2.2.6正常不
    如果你觉得以上内容帮到了你,你可以打赏支持作者
  • TA的每日心情
    擦汗
    2019-10-12 10:42
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2019-9-18 19:55 | 显示全部楼层
    本帖最后由 carlbeven 于 2019-9-18 20:03 编辑

    coloz老师,能否写一个教程?开关按键:RGB循环变颜色的;颜色拾取:使用拾色按键选取颜色,调节亮度并且保持该颜色、亮度。折腾了许久不懂如何中断RGB循环颜色和解决blinker app端接受数据延迟的问题。谢谢~
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2019-9-18 21:31 | 显示全部楼层
    carlbeven 发表于 2019-9-18 19:55
    coloz老师,能否写一个教程?开关按键:RGB循环变颜色的;颜色拾取:使用拾色按键选取颜色,调节亮度并且保 ...

    https://github.com/blinker-iot/Blinker_PRO_SMART_LAMP
    如果你觉得以上内容帮到了你,你可以打赏支持作者
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    【Arduino】108种传感器模块系列实验(104)---MAX30102手腕心率
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    萌新报道 刚购买了一个watchx
    萌新报道 刚购买了一个wat
    就这货 但是网上让下载库 我点加载以后他提示没法用。。 求大神帮忙 谢谢了
    【Arduino】108种传感器系列实验(15)---手指侦测心跳传感...
    【Arduino】108种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    求助!GM65二维码扫描模块怎么用?
    求助!GM65二维码扫描模块
    求助!GM65二维码扫描模块怎么用? 卖家给的资料真的看不懂该怎么弄。。( ̄▽ ̄)~*
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表