极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11508|回复: 3

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

[复制链接]
发表于 2015-11-5 14:38:19 | 显示全部楼层 |阅读模式
硬件:Microduino-OLED             LEONARDO            按钮
当我连续快速按按钮时,OLED上显示的数据会比实际按的次数少很多。是U8glib.h这个库不支持快速刷新吗。


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

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


  11. void setup()
  12. {
  13.   pinMode(12, INPUT);
  14.   
  15. }


  16. void loop()
  17. {
  18.   val = digitalRead(12);
  19.   if(val == 0 && P == 0)
  20.   P = 1;
  21.   if(val == 1 && P == 1)
  22.   P =2;
  23.   if(P == 2){
  24.   vol = ++vol;
  25.   P = 0;}

  26.   u8g.firstPage();  
  27.   do {
  28.     draw(vol);
  29.   }
  30.   while( u8g.nextPage() );
  31. }
复制代码
回复

使用道具 举报

发表于 2015-11-5 15:23:55 | 显示全部楼层
我觉得你应该试试是不能快速刷新还是会丢按键的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-6 10:24:00 | 显示全部楼层
zoologist 发表于 2015-11-5 15:23
我觉得你应该试试是不能快速刷新还是会丢按键的

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

使用道具 举报

发表于 2015-11-7 11:31:29 | 显示全部楼层
U8g的库方便快捷,但里面的运算步骤太多,步骤多就会导致占用资源,导致你按键时,还没处理完,所以应该就导致了丢按键,如果你依然想用U8g的库,建议你将它精简,在保留基本功能情况下,简化其运算
  1. u8g.firstPage();  
  2.   do {
  3.     draw(vol);
  4.   }
  5.   while( u8g.nextPage() );
复制代码
就是这里占用大量资源了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 16:07 , Processed in 0.035371 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表