Project aiming to make a self-controlled solar reflector
Dependencies: Accelerometer LCD Inverter Algorithm MotorDriver Anemometer GUI ArduinoJson Misc Definitions Pushbutton WebSocketClient temp_fan
Diff: main.cpp
- Revision:
- 27:26f41a320436
- Parent:
- 26:b30a61a55b2f
- Child:
- 28:1b8e1d100b58
diff -r b30a61a55b2f -r 26f41a320436 main.cpp --- a/main.cpp Thu Mar 25 02:30:21 2021 +0000 +++ b/main.cpp Tue Mar 30 13:05:34 2021 +0000 @@ -31,6 +31,7 @@ MotorDriver motor; LowPowerTimer t,t_mode, t_disp, t_recon; int mode = OP_CALIBRATION; +int prevm = mode; EthernetInterface eth; //////////////////////////////////////////////////////////////////////////////// @@ -124,8 +125,10 @@ } //////////////////////////////////////////////////////////////////////////////// case OP_NORMAL:{ + if (flag_eth && prevm != mode){gui.state(mode);} if (flag_eth){gui.getSunAngle();} if (flag_eth){gui.receives(&wthres, &flag_aTrack, &flag_powerOn,&sun_angle);} + prevm = mode; mode = (flag_powerOn) ? mode : OP_POWER_OFF; if(mode != OP_NORMAL){break;} fan.checkTemp(&mode);if(mode != OP_NORMAL){break;} ane.checkWind(&mode);if(mode != OP_NORMAL){break;} @@ -257,9 +260,11 @@ } //////////////////////////////////////////////////////////////////////////////// case OP_WIND:{ + if (flag_eth && prevm != mode){gui.state(mode);} if (flag_eth){gui.receives(&wthres, &flag_aTrack, &flag_powerOn,&sun_angle);} mode = (flag_powerOn) ? mode : OP_POWER_OFF; if(mode != OP_NORMAL){break;} if (flag_eth){gui.windSpeed(ane.getWind());} + prevm = mode; fan.checkTemp(&mode);if(mode != OP_WIND){break;} ane.checkWind(&mode);if(mode != OP_WIND){break;} if(timer_read_ms(t_disp) >= LCD_RRATE){ @@ -285,7 +290,9 @@ } //////////////////////////////////////////////////////////////////////////////// case OP_MANUAL1:{ + if (flag_eth && prevm != mode){gui.state(mode);} if (flag_eth){gui.windSpeed(ane.getWind());} + prevm = mode; fan.checkTemp(&mode);if(mode != OP_MANUAL1){break;} topL = "MANUAL:M1"; botL = Misc::itos(ane.getWind(&flag_disp)) + "kph*" + Misc::itos(fan.getTemp()) + "C*" @@ -350,7 +357,9 @@ } //////////////////////////////////////////////////////////////////////////////// case OP_MANUAL2:{ + if (flag_eth && prevm != mode){gui.state(mode);} if (flag_eth){gui.windSpeed(ane.getWind());} + prevm = mode; fan.checkTemp(&mode);if(mode != OP_MANUAL2){break;} topL = "MANUAL:M2"; botL = Misc::itos(ane.getWind(&flag_disp),3) + "kph | " + Misc::itos(fan.getTemp()) + "C"; @@ -414,7 +423,9 @@ } //////////////////////////////////////////////////////////////////////////////// case OP_MANUAL_ALL:{ + if (flag_eth && prevm != mode){gui.state(mode);} if (flag_eth){gui.windSpeed(ane.getWind());} + prevm = mode; fan.checkTemp(&mode);if(mode != OP_MANUAL_ALL){break;} topL = "MANUAL:ALL"; botL = Misc::itos(ane.getWind(&flag_disp),3) + "kph | " + Misc::itos(fan.getTemp()) + "C"; @@ -478,7 +489,9 @@ } //////////////////////////////////////////////////////////////////////////////// case OP_WSETTING:{ + if (flag_eth && prevm != mode){gui.state(mode);} if (flag_eth){gui.windSpeed(ane.getWind());} + prevm = mode; fan.checkTemp(&mode);if(mode != OP_WSETTING){break;} topL = "Threshold:"; botL = Misc::itos(wthres) + " kph"; @@ -534,7 +547,9 @@ } //////////////////////////////////////////////////////////////////////// case OP_OVERHEAT:{ + if (flag_eth && prevm != mode){gui.state(mode);} if (flag_eth){gui.windSpeed(ane.getWind());} + prevm = mode; if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = (flag_flas)? "*!* OVERHEAT *!*": " OVERHEAT "; botL = (flag_flas)? " KEEP DISTANCE " : (" " + Misc::itos(fan.getTemp(),3) + "C"); @@ -551,7 +566,9 @@ } //////////////////////////////////////////////////////////////////////// case OP_OVERHEAT_MAN:{ + if (flag_eth && prevm != mode){gui.state(mode);} if (flag_eth){gui.windSpeed(ane.getWind());} + prevm = mode; if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = (flag_flas)? "*!* OVERHEAT *!*": " OVERHEAT "; botL = (flag_flas)? " PRESS FN " : (" " + Misc::itos(fan.getTemp(),3) + "C"); @@ -566,7 +583,9 @@ } //////////////////////////////////////////////////////////////////////// case OP_POWER_OFF:{ + if (flag_eth && prevm != mode){gui.state(mode);} if (flag_eth){gui.receives(&wthres, &flag_aTrack, &flag_powerOn,&sun_angle);} + prevm = mode; if(mode != OP_POWER_OFF){break;} if(flag_powerOn){ mode = OP_NORMAL; @@ -590,6 +609,8 @@ } //////////////////////////////////////////////////////////////////////// case OP_ATRACK:{ + if (flag_eth && prevm != mode){gui.state(mode);} + prevm = mode; flag_aTrack = !flag_aTrack; gui.activeTracking(flag_aTrack); if (flag_eth){gui.windSpeed(ane.getWind());} @@ -638,10 +659,6 @@ } //////////////////////////////////////////////////////////////////////// } - - if (flag_eth){ - gui.state(mode); - } if(!flag_eth && timer_read_s(t_recon) >= TIME_RECON){ eth.connect(); gui.refreshConnection(URL,&flag_eth);