怎么让数据组件的值随着滑动组件的值改变?-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1326|回复: 5

[已解答] 怎么让数据组件的值随着滑动组件的值改变?

[复制链接]
发表于 2021-8-8 14:20 | 显示全部楼层 |阅读模式
如图,我将滑块的值设置为0-2,0代表风扇不转,1代表一档,2代表2档。
我尝试了两个办法:
1. 在滑块的回调函数中加入slider.print();2. 在数据管理dataRead中添加slider.print();
3. 添加全局变量,在滑块的回调函数中改变全局变量的值。

新手,对blinker理解不深,还请高手指教!

分别如下:1:
void SLIDER_FAN_callback(int value)
{
    BLINKER_LOG("get slider value: ", value);
    if (value == 0) {
        ledcWrite(pwmChannel, 0);
        FAN_NUM.unit("leve");
        SLIDER_FAN.print(value) ;

    }else if (value == 1) {
        ledcWrite(pwmChannel, 200);
        FAN_NUM.unit("leve");
        SLIDER_FAN.print(value)

    }else {
        ledcWrite(pwmChannel, 255);
        FAN_NUM.unit("leve");
        SLIDER_FAN.print(value)
    }
}



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

    Blinker.vibrate();

    uint32_t BlinkerTime = millis();

    Blinker.print("millis", BlinkerTime);

    FAN_NUM.print(fanLevel);   
}


3.

int fanLevel = 0;



void SLIDER_FAN_callback(int value)
{
    BLINKER_LOG("get slider value: ", value);
    if (value == 0) {
        ledcWrite(pwmChannel, 0);
        FAN_NUM.unit("leve");
        fanLevel = value;

    }else if (value == 1) {
        ledcWrite(pwmChannel, 200);
        FAN_NUM.unit("leve");
        fanLevel = value;

    }else {
        ledcWrite(pwmChannel, 255);
        FAN_NUM.unit("leve");
        fanLevel = value;
    }
}

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

    Blinker.vibrate();

    uint32_t BlinkerTime = millis();

    Blinker.print("millis", BlinkerTime);

    FAN_NUM.print(fanLevel);   
}




微信图片_20210808140845.jpg
发表于 2021-8-10 10:08 | 显示全部楼层
目前只能通过设备反馈修改组件的值
发表于 2021-8-10 10:08 | 显示全部楼层
目前只能通过设备反馈修改组件的值
 楼主| 发表于 2021-8-10 14:22 | 显示全部楼层
coloz 发表于 2021-8-10 10:08
目前只能通过设备反馈修改组件的值

大佬,追问下,我的按键组件设置为开关模式时,每次按下好像state都是一样的,这是为啥啊?

[图片]

{"light":"on"}
{"light":{"swi":"off"}}
{"light":"on"}
{"light":{"swi":"off"}}
{"light":"on"}
{"light":{"swi":"off"}}
 楼主| 发表于 2021-8-10 14:25 | 显示全部楼层
coloz 发表于 2021-8-10 10:08
目前只能通过设备反馈修改组件的值

这是回调函数
void LIGHTBUTTON_callback(const String & state) {

  BLINKER_LOG("get light state: ", state);
  if (state=="on") {
    digitalWrite(LIGHT, LOW);
    ledState = false;        
    LIGHTBUTTON.print("off");
  } else if(state=="off"){
    digitalWrite(LIGHT, HIGH);
    ledState = true;         
    LIGHTBUTTON.print("on");   
  }
  OLEDPage = 3;
}
 楼主| 发表于 2021-8-10 15:19 | 显示全部楼层
coloz 发表于 2021-8-10 10:08
目前只能通过设备反馈修改组件的值

没事了大佬,我改了你们的实例函数导致的,谢谢。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 12:34 , Processed in 0.079236 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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