Need to wait in loop until button on touchscreen is clicked
hi, i'm new programming maybe question simple (i hope
)
i have arudino mega 3.2" touchscreen. connected battery , pressure sensor. arduino reads prints voltage , pressure every 1000 ms (i put delay(1000) @ end of loop).
then, added button says "save&stop" (i want save data sd card later i'm not there yet). when button pressed new window question "do want save , stop?" , 2 buttons "yes" , "no" open.
the problem is, need run loop continuously acquire data. when loop starts on window, opened gets overwritten stuff, implemented in loop.
is there trick how run these 2 functions @ same time? without overwriting?
thanks in advance!

i have arudino mega 3.2" touchscreen. connected battery , pressure sensor. arduino reads prints voltage , pressure every 1000 ms (i put delay(1000) @ end of loop).
then, added button says "save&stop" (i want save data sd card later i'm not there yet). when button pressed new window question "do want save , stop?" , 2 buttons "yes" , "no" open.
the problem is, need run loop continuously acquire data. when loop starts on window, opened gets overwritten stuff, implemented in loop.
is there trick how run these 2 functions @ same time? without overwriting?
code: [select]
#include <utft.h>
#include <itdb02_touch.h>
#include <utft_buttons_itdb.h>
extern uint8_t smallfont[];
extern uint8_t bigfont[];
extern uint8_t dingbats1_xl[];
utft myglcd(itdb32wc, 38, 39, 40, 41);
itdb02_touch mytouch(6, 5, 4, 3, 2);
utft_buttons mybuttons(&myglcd, &mytouch);
//pressure values:
int pressurepin = a0;
int pressurevalue = 1;
int pressurevalue1;
double pressurevalue2;
double p1 = 0; //variable conversion kpa. not yet calibrated.
double p2 = 1; //variable conversion kpa. must not = 0!
//voltage values:
int voltagepin = a2;
double voltagevalue = 1;
double voltagevalue1;
int divider = 10;
//buttons
int butstop, pressed_button, buty, butn;
void setup() {
myglcd.initlcd();
myglcd.clrscr();
myglcd.setfont(bigfont);
mytouch.inittouch(1);
mytouch.setprecision(prec_medium);
mybuttons.settextfont(bigfont);
mybuttons.setsymbolfont(dingbats1_xl);
myglcd.setcolor(vga_white);
myglcd.print("pressure", 5, 30);
myglcd.print("kpa", 100, 60);
myglcd.print("voltage", 165, 30);
myglcd.print("v", 280, 60);
myglcd.setcolor(vga_white);
myglcd.drawrect(1, 20, 157, 80);
myglcd.drawrect(160, 20, 319, 80);
butstop = mybuttons.addbutton( 60, 100, 200, 40, "save & stop");
mybuttons.setbuttoncolors(vga_black, vga_gray, vga_white, vga_blue, vga_aqua);
mybuttons.drawbuttons();
}
void loop() {
//buttons: here main problem?!!
while(mytouch.dataavailable() == true)
pressed_button = mybuttons.checkbuttons();
if (pressed_button == butstop){
myglcd.setcolor(vga_yellow);
myglcd.fillrect(5, 95, 315, 235);
myglcd.setcolor(vga_black);
myglcd.print("do want to", 10, 100);
myglcd.print("save , stop?", 10, 120);
buty = mybuttons.addbutton( 10, 160, 50, 40, "yes");
butn = mybuttons.addbutton( 160, 160, 50, 40, "no");
mybuttons.setbuttoncolors(vga_black, vga_gray, vga_white, vga_blue, vga_aqua);
mybuttons.drawbuttons();
while(mytouch.dataavailable() == false) {};
/*???????? need check if button pressed therefore need jump out of loop...
i have problem checks every 1000ms whether button pressed :( */
}
//get , print pressure value every 0.5s
myglcd.setcolor(vga_black); //overwrite previous values black box.
myglcd.fillrect(5, 55, 99, 65);
pressurevalue = analogread(pressurepin);
//serial.println(pressurevalue)
pressurevalue1 = pressurevalue - p1; //for conversion kpa
if (pressurevalue1 < 0) {
pressurevalue2 = 0; //only values higher 0 shown.
} else {
pressurevalue2 = pressurevalue1 / p2; //conversion kpa
}
string pressurevalstr = string(pressurevalue2); //conversion string
myglcd.setcolor(vga_white);
myglcd.print(pressurevalstr, 5, 60);
//get , print voltage value every 0.5s
myglcd.setcolor(vga_black);
myglcd.fillrect(165, 55, 279, 65); //overwrite previous values black box.
voltagevalue = analogread(voltagepin);
//serial.println(voltagevalue);
voltagevalue1 = voltagevalue * divider; //multiply voltage divider value.
string voltagevalstr = string(voltagevalue1); //conversion string
myglcd.setcolor(vga_white);
myglcd.print(voltagevalstr, 165, 60);
delay(1000);
}
thanks in advance!

create global boolean define whether "save , stop" screen posted.
when button pressed, if "save , stop" screen posted, 1 thing. if not, else.
when button pressed, if "save , stop" screen posted, 1 thing. if not, else.
Arduino Forum > Using Arduino > Programming Questions > Need to wait in loop until button on touchscreen is clicked
arduino
Comments
Post a Comment