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 函数定义和使用方面。以下是已修正的完整代码:

修正后的代码

  1. #define BLINKER_PRINT Serial
  2. #define BLINKER_BLE
  3. #include <Blinker.h>
  4. #define led1 3 // 定义 LED1 引脚
  5. #define led2 4 // 定义 LED2 引脚
  6. // 新建组件对象
  7. BlinkerButton Button1("btn-abc");
  8. BlinkerNumber Number1("num-abc");
  9. int counter = 0;
  10. // 按下按键即会执行该函数
  11. void button1_callback(const String & state) {
  12. BLINKER_LOG("get button state: ", state);
  13. digitalWrite(led1, !digitalRead(led1)); // 控制第一个 LED 的状态切换
  14. }
  15. // 如果未绑定的组件被触发,则会执行其中内容
  16. void dataRead(const String & data)
  17. {
  18. BLINKER_LOG("Blinker readString: ", data);
  19. counter++;
  20. Number1.print(counter); // 打印计数器到 Blinker 应用程序
  21. // 根据接收到的数据控制 LED 状态
  22. if (data == "abc") {
  23. digitalWrite(led1, HIGH); // 打开 LED1
  24. digitalWrite(led2, LOW); // 确保 LED2 是关闭的
  25. } else if (data == "abd") {
  26. digitalWrite(led2, HIGH); // 打开 LED2
  27. digitalWrite(led1, LOW); // 确保 LED1 是关闭的
  28. }
  29. }
  30. void setup() {
  31. // 初始化串口
  32. Serial.begin(115200);
  33. #if defined(BLINKER_PRINT)
  34. BLINKER_DEBUG.stream(BLINKER_PRINT);
  35. #endif
  36. // 初始化有LED的IO并设置引脚模式
  37. LED_Init();
  38. // 初始化 blinker
  39. Blinker.begin();
  40. Blinker.attachData(dataRead); // 附加数据读取回调函数
  41. Button1.attach(button1_callback); // 附加按钮回调函数
  42. }
  43. void loop() {
  44. Blinker.run(); // 保持与 Blink 应用程序连接运行
  45. }
  46. void LED_Init() { // 正确地定义了此函数,并添加括号 ()
  47. pinMode(led1, OUTPUT);
  48. pinMode(led2, OUTPUT);
  49. digitalWrite(led1, LOW);
  50. digitalWrite(led2, LOW);
  51. }

改动和注意事项:

  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

注册

已经有帐号?