12864显挨个示数据,但是只显示当前的数据
在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_PIN2
#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);
}
/*************************************************/
页:
[1]