|
|
在12864屏幕上显示
a:
b:
c:
d:
然后检测按键次数,按键次数为1时显示a:1
按键次数为2时显示b:2
以此类推,用if判断按键次数,但实际运行时按键次数为1时显示1,按键次数为2时是显示2,但是1就不显示了。我想知道如何让abcd后面的按键次数一直显示。。。。谢谢
程序略有不同,cmMsec可看做按键次数
程序如下- #include <Ultrasonic.h>
- #include <U8glib.h>
- U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
- #define TRIGGER_PIN 2
- #define ECHO_PIN 3
- Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
- int sw = 5;
- int buttonState = 0;
- int buttdata = 0;
- /**************************************************/
- void draw()
- {
-
- /*************************************************/
- u8g.drawStr(0, 10, " 80:");
- u8g.drawStr(0, 22, "100:");
- u8g.drawStr(0, 34, "140:");
- u8g.drawStr(0, 46, "200:");
- delay(10);
- }
- /*************************************************/
- void draw1()
- {
- u8g.setFont(u8g_font_unifont);
- u8g.setPrintPos(10, 60);
- float cmMsec,a,b,c,d;
- long microsec = ultrasonic.timing();
- cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
- delay(5);
- u8g.print( cmMsec );
- u8g.drawStr(100, 60, "CM");
- buttonState = digitalRead(sw);
- if (buttonState == LOW)
- {
- delay(500);
- buttdata ++;
- }
- if (buttdata == 1)
- {
- a = cmMsec;
- delay(10);
- }
- if (buttdata == 2)
- {
- b = cmMsec;
- delay(10);
- }
- if (buttdata == 3)
- {
- c = cmMsec;
- delay(10);
- }
- if (buttdata == 4)
- {
- d = cmMsec;
- delay(10);
- }
- if (buttdata > 4)
- {
- buttdata = 0;
- delay(10);
- }
- /*************************************************/
- u8g.setPrintPos(30, 10);
- u8g.print( a );
- u8g.setPrintPos(30, 22);
- u8g.print( b );
- u8g.setPrintPos(30, 34);
- u8g.print( c );
- u8g.setPrintPos(30, 46);
- u8g.print( d );
- }
- /*************************************************/
- void setup(void)
- {
- Serial.begin(9600);
- pinMode(sw,INPUT);
- }
- /*************************************************/
- void loop(void) {
- u8g.firstPage();
- do {
- draw();
- draw1();
- }
- while( u8g.nextPage() );
- delay(30);
- }
- /*************************************************/
复制代码
|
|