极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10146|回复: 0

12864显挨个示数据,但是只显示当前的数据

[复制链接]
发表于 2014-7-22 10:40:14 | 显示全部楼层 |阅读模式
在12864屏幕上显示

             a:
             b:
             c:
             d:
然后检测按键次数,按键次数为1时显示a:1  
                                按键次数为2时显示b:2
以此类推,用if判断按键次数,但实际运行时按键次数为1时显示1,按键次数为2时是显示2,但是1就不显示了。我想知道如何让abcd后面的按键次数一直显示。。。。谢谢

程序略有不同,cmMsec可看做按键次数
程序如下
  1. #include <Ultrasonic.h>
  2. #include <U8glib.h>
  3. U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
  4. #define TRIGGER_PIN  2
  5. #define ECHO_PIN     3
  6. Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
  7. int sw = 5;
  8. int buttonState = 0;
  9. int buttdata = 0;

  10. /**************************************************/

  11. void draw()
  12. {
  13.   
  14.   /*************************************************/
  15.   u8g.drawStr(0, 10, " 80:");
  16.   u8g.drawStr(0, 22, "100:");
  17.   u8g.drawStr(0, 34, "140:");
  18.   u8g.drawStr(0, 46, "200:");
  19.   delay(10);
  20. }
  21.   /*************************************************/
  22.   void draw1()
  23. {
  24.    u8g.setFont(u8g_font_unifont);
  25.   u8g.setPrintPos(10, 60);
  26.   float cmMsec,a,b,c,d;
  27.   long microsec = ultrasonic.timing();
  28.   cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
  29.   delay(5);
  30.   u8g.print( cmMsec );
  31.   u8g.drawStr(100, 60, "CM");
  32.   buttonState = digitalRead(sw);
  33.   if (buttonState == LOW)
  34.   {     
  35.     delay(500);
  36.     buttdata ++;
  37.   }
  38.   if (buttdata == 1)
  39.   {
  40.     a = cmMsec;
  41.     delay(10);
  42.   }
  43.   if (buttdata == 2)
  44.   {
  45.     b = cmMsec;
  46.     delay(10);
  47.   }
  48.   if (buttdata == 3)
  49.   {
  50.     c = cmMsec;
  51.     delay(10);
  52.   }
  53.   if (buttdata == 4)
  54.   {
  55.     d = cmMsec;
  56.     delay(10);
  57.   }
  58.   if (buttdata > 4)
  59.   {
  60.     buttdata = 0;
  61.     delay(10);
  62.   }
  63. /*************************************************/
  64.   u8g.setPrintPos(30, 10);
  65.   u8g.print( a );
  66.   u8g.setPrintPos(30, 22);
  67.   u8g.print( b );
  68.   u8g.setPrintPos(30, 34);
  69.   u8g.print( c );
  70.   u8g.setPrintPos(30, 46);
  71.   u8g.print( d );
  72. }
  73. /*************************************************/
  74. void setup(void)
  75. {
  76.   Serial.begin(9600);
  77.   pinMode(sw,INPUT);
  78. }
  79. /*************************************************/
  80. void loop(void) {
  81.   u8g.firstPage();  
  82.   do {
  83.     draw();
  84.     draw1();
  85.   }
  86.   while( u8g.nextPage() );
  87.   delay(30);
  88. }
  89. /*************************************************/


复制代码


回复

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-6 14:35 , Processed in 0.062660 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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