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:
- 9:6e950b9a9a81
- Parent:
- 8:a1481d5f0572
- Child:
- 10:566529fff615
--- a/main.cpp Fri Mar 12 01:08:32 2021 +0000 +++ b/main.cpp Fri Mar 12 01:45:00 2021 +0000 @@ -15,6 +15,7 @@ #include "Pushbutton.h" #include "PinAssignment.h" #include "LCD.h" +#include "Misc.h" #include <string> #define timer_read_s(x) chrono::duration_cast<chrono::seconds>((x).elapsed_time()).count() @@ -44,6 +45,7 @@ int flag_time = 1; //Normal mode time int flag_idle = 0; //Idling time int flag_disp = 1; //Anti-flickering +int flag_bres = 0; //Flag for checking button released //PUSH BUTTONS Pushbutton bt_fn(PIN_BTFN,&mode,&flag_disp); @@ -80,6 +82,7 @@ flag_disp = 0; } + flag_idle = 0; break; } //////////////////////////////////////////////////////////////////////////////// @@ -92,6 +95,7 @@ flag_disp = 0; } + flag_idle = 0; break; } //////////////////////////////////////////////////////////////////////////////// @@ -119,12 +123,52 @@ //////////////////////////////////////////////////////////////////////////////// case OP_WSETTING:{ topL = "Threshold:"; - botL = ""; + botL = Misc::itos(wthres) + " kph"; if(flag_disp){ lcd.LCD_display(topL,botL); flag_disp = 0; } + //TIMEOUT + //////////////////////////////////////////////////////////////////// + if(!flag_idle) //Check if button is not pressed + { + t_mode.reset(); + t_mode.start(); + flag_idle = 1; //Indicate idling + } + else if(timer_read_s(t_mode) > TIME_WSETTING_TIMEOUT) + { + mode = OP_NORMAL; + flag_disp = 1; + break; + } + //////////////////////////////////////////////////////////////////// + + if(!(flag_bres == 1 && bt_inc.read()) && !(flag_bres == -1 && bt_dec.read())){ + if(bt_inc.read() && wthres < WIND_THRES_MAX) + { + ane.setThres(++wthres); + botL = Misc::itos(wthres) + " kph"; + lcd.LCD_display(topL,botL); + flag_idle = 0; + flag_bres = 1; + } + else if(bt_dec.read() && wthres > WIND_THRES_MIN) + { + ane.setThres(--wthres); + botL = Misc::itos(wthres) + " kph"; + lcd.LCD_display(topL,botL); + flag_idle = 0; + flag_bres = -1; + } + else{ + flag_bres = 0; + } + } + + flag_time = 1; //Set the system in motion once done adjusting + break; } }