可以在原代码中添加一个新的按钮对象 Button2
,并为其定义一个回调函数 button2_callback
。这个新按钮将会控制LED引脚3(假设LED引脚3已被定义为OUTPUT)。以下是修改后的代码:
#define BLINKER_PRINT Serial
#define BLINKER_BLE
#include <Blinker.h>
// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerButton Button2("btn-abd"); // 新增的按钮
BlinkerNumber Number1("num-abc");
int counter = 0;
// 按下按键即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state (Button 1): ", state);
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
// 按下按键二即会执行该函数
void button2_callback(const String & state) {
BLINKER_LOG("get button state (Button 2): ", state);
digitalWrite(3, !digitalRead(3)); // 控制引脚3上的LED状态
}
// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
counter++;
Number1.print(counter);
}
void setup() {
// 初始化串口
Serial.begin(115200);
#if defined(BLINKER_PRINT)
BLINKER_DEBUG.stream(BLINKER_PRINT);
#endif
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);
pinMode(3, OUTPUT); // 初始化引脚3为输出模式
digitalWrite(LED_BUILTIN, HIGH);
// 初始化blinker
Blinker.begin();
Blinker.attachData(dataRead);
Button1.attach(button1_callback); // 为第一个按钮绑定回调函数
Button2.attach(button2_callback); // 为第二个按钮绑定回调函数
}
void loop() {
Blinker.run();
}
修改说明:
- 增加了新的按钮
Button2
,名字为 “btn-abd”。 - 增加了
button2_callback
函数,用于处理按下第二个按钮时控制引脚3的状态。 - 在
setup()
函数中,将引脚3初始化为输出模式。
这样,当你按下对应的按钮时,会分别控制内置LED和连接到引脚3上的LED。
内容由零声教学AI助手提供,问题来源于学员提问