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

1bazinga 发表于 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);   
}




coloz 发表于 2021-8-10 10:08

目前只能通过设备反馈修改组件的值

coloz 发表于 2021-8-10 10:08

目前只能通过设备反馈修改组件的值

1bazinga 发表于 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"}}

1bazinga 发表于 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;
}

1bazinga 发表于 2021-8-10 15:19

coloz 发表于 2021-8-10 10:08
目前只能通过设备反馈修改组件的值

没事了大佬,我改了你们的实例函数导致的,谢谢。。。
页: [1]
查看完整版本: 怎么让数据组件的值随着滑动组件的值改变?