如果您想去除舵机相关的部分,可以对代码进行一些修改。以下是更新后的代码,已经去掉了与舵机相关的内容:
#define BLINKER_PRINT Serial
#define BLINKER_BLE
#include <Blinker.h>
// 定义引脚号
#define pin_bluetooth_stat 4
#define pin_led 6
// 新建组件对象
BlinkerButton Button1("btn-abc"); // 开门
BlinkerButton Button2("btn-abd"); // 更新数据
BlinkerNumber NUM("num-abc");
BlinkerNumber NUM1("num-tim1");
BlinkerNumber NUM2("num-tim2");
BlinkerNumber NUM3("num-tim3");
BlinkerNumber NUM4("num-num");
unsigned int a, b, c;
unsigned int tims = 0;
byte t;
void setup()
{
// 初始化串口与引脚
Serial.begin(9600);
pinMode(pin_bluetooth_stat, INPUT);
pinMode(pin_led, OUTPUT);
// 初始化 Blinker
Blinker.begin(0, 1, 9600);
Button1.attach(button1_callback);
Button2.attach(button2_callback);
digitalWrite(pin_led, HIGH); // 初始 LED 状态为高
}
void loop()
{
// 判断蓝牙是否连接(蓝牙连接时为高)
while (!digitalRead(pin_bluetooth_stat))
{
t = 1;
digitalWrite(pin_led, LOW); // 蓝牙未连接时关闭 LED
}
digitalWrite(pin_led, HIGH); // 蓝牙已连接时打开 LED
Blinker.run();
if (digitalRead(pin_bluetooth_stat) && t == 1)
{
delay(1000);
freshData(); // 更新数据
}
t = 0;
}
// 按下按键即会执行该函数(开门)
void button1_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);
Open();
}
// 更新数据函数(去掉了与舵机相关的逻辑)
void button2_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);
freshData();
}
// 模拟开门动作,仅打印信息,不再控制舵机。
void Open()
{
Serial.println("Welcome!"); // 打印欢迎信息
tims += 1; // 增加计数器以跟踪开门次数
freshData(); // 更新数据显示
delay(500); // 添加延迟(可根据需要调整)
}
// 更新数据函数(计算运行时间,可以去掉)
void freshData()
{
NUM3.print((a = millis() / 60000) % 60); // 分钟数显示
NUM2.print((b = a / 60) % 24); // 小时数显示
NUM1.print(c = b / 24); // 天数显示
NUM4.print(tims); // 显示开门次数
}
修改说明:
- 移除了关于舵机 (
Servo s
) 的定义和使用,包括s.attach()
和s.write()
。 - 在
Open()
函数中,只保留了打印“欢迎!”的信息,以及计数和更新数据的功能。
现在这个版本的代码不再控制舵机,而是通过按钮触发事件并通过串口输出消息。如果还有其他要求或想要进一步修改,请告诉我!
内容由零声教学AI助手提供,问题来源于学员提问