arduino - delay() does not work with seven segment LED -
my question is, how display variable in 7 segment led? want refresh display every 2 seconds, if execute code below, not display properly. solutions?
#include "sevseg.h" int reading; int temppin = 0; float tempc; unsigned long starttime = millis(); sevseg sevseg; //initiate 7 segment controller object void setup() { analogreference(internal); serial.begin(9600); byte numdigits = 4; byte digitpins[] = {2, 3, 4, 5}; byte segmentpins[] = {6, 7, 8, 9, 10, 11, 12, 13}; sevseg.begin(common_anode, numdigits, digitpins, segmentpins); sevseg.setbrightness(90); } void loop() { unsigned long currenttime = millis(); unsigned long elapsedtime = currenttime - starttime; if(elapsedtime > 2000) { tempc = temprequest(); sevseg.setnumber(tempc, 2); sevseg.refreshdisplay(); // must run repeatedly starttime = currenttime; } } float temprequest() { reading = analogread(temppin); tempc = reading / 9.31; return tempc; }
as comment in code points out, need call sevseg.refreshdisplay(); repeatedly , not every 2 sec.
its's mentioned in the documentation:
displaying
sevseg.refreshdisplay();your program must run refreshdisplay() function repeatedly display number. note delays introduced other functions produce undesirable effects on display.
which means must run sevseg.refreshdisplay(); on every loop() execution , not when change number. , use of delay() make not work.
void loop() { unsigned long currenttime = millis(); unsigned long elapsedtime = currenttime - starttime; if(elapsedtime > 2000){ tempc = temprequest(); sevseg.setnumber(tempc, 2); starttime = currenttime; } sevseg.refreshdisplay(); // must run repeatedly }
Comments
Post a Comment