小黄板APP用arduino,点灯简单替代

文章提供了使用ESP8266(小黄板)进行简单灯光控制的Arduino代码,包括WiFi连接、按钮和RGB灯的控制。作者提到原始APP不可用,因此编写了自己的控制页面,并提醒读者需要更新库以避免实时数据问题。代码虽然简洁但可能不优雅,适合新手参考或改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

esp小黄版不提供技术支持,但是还在卖!给的APP也不能用了,百度了一圈,没用能直接用的APP,放着也是放着,就造个简单控制页面。
切记是这款!!!
在这里插入图片描述

代码写的是狗看了都摇头,但是能用,懒得优化,都写了备注,自己改改,写给新手或者图方便的老铁,如果能帮忙优化一下就更好了。

直奔主题上代码!

复制到arduino直接烧录即可,需要esp8266的库,直接按点灯科技的入门来就行了,反正获取秘钥的时候你也要看的。

https://diandeng.tech/doc/getting-start-8266

#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "点灯里面获取的秘钥";
char ssid[] = "你的wifi账号";
char pswd[] = "你的wifi密码";

// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerButton Button2("btn-led");
BlinkerButton Button3("btn-getled");
BlinkerButton Button4("btn-mco");
BlinkerButton Button5("btn-3qi");
BlinkerButton Button6("btn-jkf");
BlinkerButton Button7("btn-f6x");
BlinkerButton Button8("btn-o32");
BlinkerButton BL1("btn-16");
BlinkerButton BL2("btn-14");
BlinkerButton BL3("btn-5");
BlinkerButton BL4("btn-4");
BlinkerButton BL5("btn-0");
BlinkerButton BL6("btn-2");
BlinkerButton BLs[]={BL1,BL2,BL3,BL4,BL5,BL6};
BlinkerNumber Number1("num-eji");
BlinkerRGB RGB1("col-rgb");
int leds[]={16,14,5,4,0,2};//LEDGPIO
int rgbs[]={15,12,13};//RGBGPIO

//LED初始化
void ledsMode(){
  for(int i=0;i<6;i++){
    pinMode(leds[i], OUTPUT);
    digitalWrite(leds[i],HIGH);
  }
}
//RGB初始化
void rgbsMode(){
  for(int i=0;i<3;i++){
    pinMode(rgbs[i], OUTPUT);
  }
}
//调色板
void rgb1_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value)
{
    BLINKER_LOG("R value: ", r_value);
    BLINKER_LOG("G value: ", g_value);
    BLINKER_LOG("B value: ", b_value);
    BLINKER_LOG("Rrightness value: ", bright_value);
    analogWrite(rgbs[0],r_value);
    analogWrite(rgbs[1],g_value);
    analogWrite(rgbs[2],b_value);
}
//rgb关闭
void button7_callback(const String & state){
    analogWrite(rgbs[0],0);
    analogWrite(rgbs[1],0);
    analogWrite(rgbs[2],0);
}

// 按下按键即会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));

}

void bl1_callback(const String & state) {
    int i = 0;
    BLINKER_LOG("get button state: ", state);
    digitalWrite(leds[i], !digitalRead(leds[i]));
    BL1.print(digitalRead(leds[i])==LOW ? "on" : "off"); 
}
void bl2_callback(const String & state) {
    int i = 1;
    BLINKER_LOG("get button state: ", state);
    digitalWrite(leds[i], !digitalRead(leds[i]));
    BL2.print(digitalRead(leds[i])==LOW ? "on" : "off"); 
}
void bl3_callback(const String & state) {
    int i = 2;
    BLINKER_LOG("get button state: ", state);
    digitalWrite(leds[i], !digitalRead(leds[i]));
    BL3.print(digitalRead(leds[i])==LOW ? "on" : "off"); 
}
void bl4_callback(const String & state) {
    int i = 3;
    BLINKER_LOG("get button state: ", state);
    digitalWrite(leds[i], !digitalRead(leds[i]));
    BL4.print(digitalRead(leds[i])==LOW ? "on" : "off"); 
}
void bl5_callback(const String & state) {
    int i = 4;
    BLINKER_LOG("get button state: ", state);
    digitalWrite(leds[i], !digitalRead(leds[i]));
    BL5.print(digitalRead(leds[i])==LOW ? "on" : "off"); 
}
void bl6_callback(const String & state) {
    int i = 5;
    BLINKER_LOG("get button state: ", state);
    digitalWrite(leds[i], !digitalRead(leds[i]));
    BL6.print(digitalRead(leds[i])==LOW ? "on" : "off"); 
}

//获取LED状态赋予按钮
void button3_callback(const String & state){
    for(int i=0;i<6;i++){
      BLs[i].print(digitalRead(leds[i])==LOW ? "on" : "off");
    }
}
//LED全关
void button4_callback(const String & state){
    for(int i=0;i<6;i++){
      digitalWrite(leds[i],HIGH);
      Blinker.delay(50);
    }
}
//LED全开
void button5_callback(const String & state){
    for(int i=0;i<6;i++){
      digitalWrite(leds[i],LOW);
      Blinker.delay(50);
    }
}
int ll=0;
//跑马灯
void button6_callback(const String & state){
  if(state!="off"){
    ll=1;
    Button6.print("on");
  }else{
    ll=0;
    Button6.print("off");
  }
}

void ledloops(){
    for(int i=0;i<6;i++){
      int a=1;
      if(i==0){
        a=5;
      }else{
        a=i-1;
      }
      digitalWrite(leds[a],HIGH);
      digitalWrite(leds[i],LOW);
      Blinker.delay(50);
    }
}
// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    uint32_t BlinkerTime = millis();

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

void ledsLoop(const String & state){
  BLINKER_LOG("get button state: ", state);
  for(int i=0;i<5;i++){
    digitalWrite(leds[i], HIGH);
    Blinker.delay(50);
  }
    for(int i=0;i<5;i++){
    digitalWrite(leds[i], LOW);
    Blinker.delay(50);
  }
}
//实时数据
void rtData()
{
    Blinker.sendRtData("wd", random(0,120));
    Blinker.sendRtData("sd", random(0,120)/2.0);
    Blinker.sendRtData("xd", random(0,120)/3.0);
    Blinker.printRtData();
}
//历史数据
void dataStorage()
{
    Blinker.dataStorage("wd", random(0,120));
    Blinker.dataStorage("sd", random(0,120)/2.0);
    Blinker.dataStorage("xd", random(0,120)/2.0);
}
//微信通知测试
void button8_callback(const String & state){
    Blinker.wechat("Title: button", "State: pressed", "Message: hello blinker"); 
}

void setup() {
    // 初始化串口
    Serial.begin(115200);

    //BLINKER_DEBUG.stream(Serial);
    
    // 初始化GPIO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    ledsMode();
    rgbsMode();

    
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Blinker.attachRTData(rtData);
    Blinker.attachDataStorage(dataStorage);
    Button1.attach(button1_callback);
    Button2.attach(ledsLoop);
    BL1.attach(bl1_callback);
    BL2.attach(bl2_callback);
    BL3.attach(bl3_callback);
    BL4.attach(bl4_callback);
    BL5.attach(bl5_callback);
    BL6.attach(bl6_callback);
    Button3.attach(button3_callback);
    Button4.attach(button4_callback);
    Button5.attach(button5_callback);
    Button6.attach(button6_callback);
    Button7.attach(button7_callback);
    Button8.attach(button8_callback);
    RGB1.attach(rgb1_callback);
    
}

void loop() {
    Blinker.run();
    if(ll==1){
      ledloops();
    }
}

UI长这样

键名“btn-abc”对应BlinkerButton Button1(“btn-abc”)构造参数
一个个拖一个个改名就行
在这里插入图片描述

烧录

小黄板不能直接连电脑,需要TTL,tx和rx不用交叉,记得盖上跳帽

在这里插入图片描述

一些问题

代码是我Java的习惯写的,arduino我也是萌新宝宝,不知道对象操作能做到哪种程度,有的没的代码都留上面了,所以看起来有些四不像,反正能跑能用(骄傲!)

切记把包都用最新版,不然实时数据会有小问题。

光敏电阻可以从ADC直接读取(analogRead(A0))没啥用我就没加,你可以直接把传递实时数据的随机数换成读取光敏电阻。

ps:电源LED太刺眼可以直接拔掉。

没人比我更懒

原理图我直接复制粘贴!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值