dbo 发表于 2015-11-5 14:38:19

做了个用OLED+按钮的计数器,按的快点会丢数据

硬件:Microduino-OLED             LEONARDO            按钮
当我连续快速按按钮时,OLED上显示的数据会比实际按的次数少很多。是U8glib.h这个库不支持快速刷新吗。


#include "U8glib.h"
long vol;
int val = 0;
int P = 0;
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);// definition OLED connection

void draw(long temp) {
u8g.setFont(u8g_font_courB14);//font
u8g.setPrintPos(0, 60);
u8g.print(temp);
}


void setup()
{
pinMode(12, INPUT);

}


void loop()
{
val = digitalRead(12);
if(val == 0 && P == 0)
P = 1;
if(val == 1 && P == 1)
P =2;
if(P == 2){
vol = ++vol;
P = 0;}

u8g.firstPage();
do {
    draw(vol);
}
while( u8g.nextPage() );
}

zoologist 发表于 2015-11-5 15:23:55

我觉得你应该试试是不能快速刷新还是会丢按键的

dbo 发表于 2015-11-6 10:24:00

zoologist 发表于 2015-11-5 15:23 static/image/common/back.gif
我觉得你应该试试是不能快速刷新还是会丢按键的

刚刚我试了一下不用OLED的代码 直接输出到串口没问题 按键不会丢

加饭 发表于 2015-11-7 11:31:29

U8g的库方便快捷,但里面的运算步骤太多,步骤多就会导致占用资源,导致你按键时,还没处理完,所以应该就导致了丢按键,如果你依然想用U8g的库,建议你将它精简,在保留基本功能情况下,简化其运算
u8g.firstPage();
do {
    draw(vol);
}
while( u8g.nextPage() ); 就是这里占用大量资源了
页: [1]
查看完整版本: 做了个用OLED+按钮的计数器,按的快点会丢数据