ZBLOG

#define BLINKER_PRINT Serial #define BLINKER_BLE #include #define led1 3 #define led2 4 // 新建组件对象 BlinkerButton Button1("btn-abc"); BlinkerNumber Number1("num-abc"); int counter = 0; // 按下按键即会执行该函数 void button1_callback(const Stri...

在你提供的代码中,有几个小问题需要修正,特别是在 LED_Init 函数定义和使用方面。以下是已修正的完整代码:

修正后的代码

#define BLINKER_PRINT Serial
#define BLINKER_BLE

#include <Blinker.h>

#define led1 3 // 定义 LED1 引脚
#define led2 4 // 定义 LED2 引脚

// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");

int counter = 0;

// 按下按键即会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(led1, !digitalRead(led1)); // 控制第一个 LED 的状态切换
}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter); // 打印计数器到 Blinker 应用程序
    
    // 根据接收到的数据控制 LED 状态
    if (data == "abc") {
        digitalWrite(led1, HIGH); // 打开 LED1
        digitalWrite(led2, LOW);   // 确保 LED2 是关闭的
    } else if (data == "abd") {
        digitalWrite(led2, HIGH);  // 打开 LED2
        digitalWrite(led1, LOW);    // 确保 LED1 是关闭的 
    }
}

void setup() {
    // 初始化串口
    Serial.begin(115200);
    
    #if defined(BLINKER_PRINT)
        BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif
    
    // 初始化有LED的IO并设置引脚模式
    LED_Init();
    
    // 初始化 blinker
    Blinker.begin();
    
    Blinker.attachData(dataRead);   // 附加数据读取回调函数
    Button1.attach(button1_callback); // 附加按钮回调函数
}

void loop() {
    Blinker.run();  // 保持与 Blink 应用程序连接运行
}

void LED_Init() {  // 正确地定义了此函数,并添加括号 ()
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);  
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
}

改动和注意事项:

  1. LED_Init():

    • 在原始代码中,您忘记了在 LED_Init 函数后加上括号,这将导致编译错误。我已添加了括号以确保正确声明这个函数。
  2. 控制LED:

    • 我修改了 button1_callback 中对内置LED(如果想用外部引脚,请替换为对应引脚)进行切换,以确保它能与设备相应。
  3. 蓝牙命令处理:

    • dataRead 函数中根据传入的数据 "abc""abd" 来打开不同的 LEDs,你可以根据实际需要调整这些逻辑。
  4. 引脚初始化:

    • 添加了对两个 LEDs 的初始化,以确保它们开始时处于关闭状态。

使用说明:

  • 请将以上代码上传到您的 ESP32-C3 开发板。
  • 使用 Blinker 应用来控制 LEDs,发送 "abc" 打开连接到 GPIO 3 的 LED(即 led1),发送 "abd" 打开连接到 GPIO 4 的 LED(即 led2)。
  • 每次调用未绑定的数据时,它都会增加计数并显示在应用程序中。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22764

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?