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:
- 30:7fce3ae08754
- Parent:
- 29:5b14b0ec5efc
- Child:
- 32:7b58f5574b7a
--- a/main.cpp Tue Mar 30 18:13:01 2021 +0000 +++ b/main.cpp Thu Apr 01 14:46:41 2021 +0000 @@ -29,7 +29,7 @@ I2C i2c(PIN_SDA,PIN_SCL); Anemometer ane; // MotorDriver motor; -LowPowerTimer t,t_mode, t_disp, t_recon; +LowPowerTimer t,t_mode, t_disp, t_recon, t_wind; int mode = OP_ETHERNET; int prevm = mode; EthernetInterface eth; @@ -76,6 +76,7 @@ t.start(); //Start timer t_disp.start(); +t_wind.start(); while(1) { @@ -166,7 +167,7 @@ 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;} - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} topL = "NORMAL:IDLING"; topL = (flag_aTrack) ? topL : "*" + topL; if(timer_read_ms(t_disp) >= LCD_RRATE){ @@ -199,7 +200,7 @@ { 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());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} fan.checkTemp(&mode);if(mode != OP_NORMAL){break;} ane.checkWind(&mode);if(mode != OP_NORMAL){break;} if(timer_read_ms(t_disp) >= LCD_RRATE){ @@ -219,7 +220,7 @@ { 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());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} fan.checkTemp(&mode);if(mode != OP_NORMAL){break;} ane.checkWind(&mode);if(mode != OP_NORMAL){break;} if(timer_read_ms(t_disp) >= LCD_RRATE){ @@ -243,7 +244,7 @@ { 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());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} fan.checkTemp(&mode);if(mode != OP_NORMAL){break;} ane.checkWind(&mode);if(mode != OP_NORMAL){break;} if(timer_read_ms(t_disp) >= LCD_RRATE){ @@ -263,7 +264,7 @@ { 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());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} fan.checkTemp(&mode);if(mode != OP_NORMAL){break;} ane.checkWind(&mode);if(mode != OP_NORMAL){break;} if(timer_read_ms(t_disp) >= LCD_RRATE){ @@ -294,7 +295,7 @@ 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_WIND){break;} - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} prevm = mode; fan.checkTemp(&mode);if(mode != OP_WIND){break;} ane.checkWind(&mode);if(mode != OP_WIND){break;} @@ -311,15 +312,13 @@ //Move all motor backward motor.moveBackward(M_ALL); flag_time = 1; //Set the system in motion once windspeed has subsided - break; - flag_idle = 0; break; } //////////////////////////////////////////////////////////////////////////////// case OP_MANUAL1:{ if (flag_eth && prevm != mode){gui->state(mode);} - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} prevm = mode; fan.checkTemp(&mode);if(mode != OP_MANUAL1){break;} topL = "MANUAL:M1"; @@ -348,7 +347,7 @@ while(bt_inc.read()) //Extend { - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = (flag_flas)? "MANUAL:M1 <=> " : "MANUAL:M1 <-=->"; flag_flas = !flag_flas; @@ -363,7 +362,7 @@ } while(bt_dec.read()) //Retract { - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = (flag_flas)? "MANUAL:M1 > = <" : "MANUAL:M1 ->=<-"; flag_flas = !flag_flas; @@ -386,7 +385,7 @@ //////////////////////////////////////////////////////////////////////////////// case OP_MANUAL2:{ if (flag_eth && prevm != mode){gui->state(mode);} - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} prevm = mode; fan.checkTemp(&mode);if(mode != OP_MANUAL2){break;} topL = "MANUAL:M2"; @@ -415,7 +414,7 @@ while(bt_inc.read()) //Extend { - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = (flag_flas)? "MANUAL:M2 <=> " : "MANUAL:M2 <-=->"; flag_flas = !flag_flas; @@ -430,7 +429,7 @@ } while(bt_dec.read()) //Retract { - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = (flag_flas)? "MANUAL:M2 > = <" : "MANUAL:M2 ->=<-"; flag_flas = !flag_flas; @@ -453,7 +452,7 @@ //////////////////////////////////////////////////////////////////////////////// case OP_MANUAL_ALL:{ if (flag_eth && prevm != mode){gui->state(mode);} - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} prevm = mode; fan.checkTemp(&mode);if(mode != OP_MANUAL_ALL){break;} topL = "MANUAL:ALL"; @@ -482,7 +481,7 @@ while(bt_inc.read()) //Extend { - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = (flag_flas)? "MANUAL:ALL <=> " : "MANUAL:ALL <-=->"; flag_flas = !flag_flas; @@ -497,7 +496,7 @@ } while(bt_dec.read()) //Retract { - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = (flag_flas)? "MANUAL:ALL > = <" : "MANUAL:ALL ->=<-"; flag_flas = !flag_flas; @@ -520,7 +519,7 @@ //////////////////////////////////////////////////////////////////////////////// case OP_WSETTING:{ if (flag_eth && prevm != mode){gui->state(mode);} - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} prevm = mode; fan.checkTemp(&mode);if(mode != OP_WSETTING){break;} topL = "Threshold:"; @@ -578,7 +577,7 @@ //////////////////////////////////////////////////////////////////////// case OP_OVERHEAT:{ if (flag_eth && prevm != mode){gui->state(mode);} - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} prevm = mode; if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = (flag_flas)? "*!* OVERHEAT *!*": " OVERHEAT "; @@ -597,7 +596,7 @@ //////////////////////////////////////////////////////////////////////// case OP_OVERHEAT_MAN:{ if (flag_eth && prevm != mode){gui->state(mode);} - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} prevm = mode; if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = (flag_flas)? "*!* OVERHEAT *!*": " OVERHEAT "; @@ -621,7 +620,7 @@ mode = OP_NORMAL; break; } - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} fan.checkTemp(&mode);if(mode != OP_POWER_OFF){break;} if(timer_read_ms(t_disp) >= LCD_RRATE){ topL = "SLEEP MODE"; @@ -643,7 +642,7 @@ prevm = mode; flag_aTrack = !flag_aTrack; gui->activeTracking(flag_aTrack); - if (flag_eth){gui->windSpeed(ane.getWind());} + if (flag_eth && timer_read_ms(t_wind) >= TIME_GUIWIND){gui->windSpeed(ane.getWind());t_wind.reset();t_wind.start();} fan.checkTemp(&mode);if(mode != OP_ATRACK){break;} topL = "TRACKING MODE:"; botL = (flag_aTrack) ? "ACTIVE (ACC)" : "AUTO (ONLINE)";