blinker怎么实现控制状态显示和u8g2时钟显示
预想效果:显示屏上能显示当前开关灯的状态,和实时时钟出现问题:如图,时钟出现23:71分void loop()//一直循环的语句
{
Blinker.run();
uint32 times = Blinker.time();
int8_t sec = Blinker.second();
int8_t min = Blinker.minute();
int8_t hour = Blinker.hour();
u8g2.setFont(u8g2_font_unifont_t_chinese2);//设置一个字体
u8g2.setCursor(64, 16);//选定坐标
u8g2.print(hour);//上坐标内显示的内容
u8g2.sendBuffer();//显示再屏幕上
u8g2.setCursor(0, 30);//选定坐标
u8g2.print("Wel come to: 315");//上坐标内显示的内容
u8g2.sendBuffer();//显示再屏幕上
u8g2.setCursor(106, 16);//选定坐标
u8g2.print(sec);//上坐标内显示的内容
u8g2.sendBuffer();//显示再屏幕上
u8g2.setCursor(85, 16);//选定坐标
u8g2.print(min);//上坐标内显示的内容
u8g2.sendBuffer();//显示再屏幕上
} 后来在循环里添加
清屏u8g2.clearBuffer(); 和延迟 delay(1000);但是效果不理想,屏幕在一直闪动
而且我在控制舵机处添加的状态显示也被loop里的清屏命令清除了
void button2_callback(const String & state)
{
BLINKER_LOG("get button2 state: ", state);
if (state=="press")
{
myservo.write(19);//舵机转动19°开灯
delay(2000);
myservo.write(35);//舵机转动到原35°复位
BlinkerMIOT.print();//反馈状态
u8g2.setCursor(0, 14);
u8g2.print("当前:关");//在屏幕上显示状态
u8g2.sendBuffer();
}
}求助 时钟的秒是怎么实现实时显示的?
还有一个问题,程序控制功能都能实现,但是舵机有时候会自己打开灯,是程序原因还是网络原因 如果不需要舵机的保持力,驱动完舵机注销引脚,避免此类情况发生
另外,可以使用millis()定时刷新屏幕,避免过度刷新 这些需求基本和blinker无关,自己存个变量然后显示出来就行,至于舵机不受控,估计是电源不行,导致复位了吧 奈何col 发表于 2020-8-7 02:00
这些需求基本和blinker无关,自己存个变量然后显示出来就行,至于舵机不受控,估计是电源不行,导致复位了 ...
好的谢谢 XlinliY.Zhang 发表于 2020-8-7 01:23
如果不需要舵机的保持力,驱动完舵机注销引脚,避免此类情况发生
另外,可以使用millis()定时刷新屏幕,避 ...
那我想刷新屏幕信息的同时,怎么显示获取开关灯的状态呢 hyh520 发表于 2020-8-7 16:32
那我想刷新屏幕信息的同时,怎么显示获取开关灯的状态呢
用个bool储存开关灯状态就行了 XlinliY.Zhang 发表于 2020-8-7 16:35
用个bool储存开关灯状态就行了
我去试试谢谢啦
页:
[1]