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:
- 15:2b3b5d8bf692
- Parent:
- 14:3989d03a8b98
- Child:
- 16:326404a7a8b8
diff -r 3989d03a8b98 -r 2b3b5d8bf692 main.cpp --- a/main.cpp Fri Mar 12 04:15:49 2021 +0000 +++ b/main.cpp Fri Mar 12 17:01:39 2021 +0000 @@ -101,7 +101,7 @@ ane.checkWind(&mode); topL = "NORMAL:IDLING"; if(timer_read_ms(t_disp) >= LCD_RRATE){ - botL = Misc::itos((int)ane.getWind(&flag_disp)) + " kph"; + botL = Misc::itos((int)ane.getWind(&flag_disp),3) + "kph"; t_disp.reset(); t_disp.start(); } @@ -122,13 +122,13 @@ //Moving Reflector 1 ang_R = acc.getAngle(S_R1); - while(ang_R <= ref_R1 && !acc.checkAngle(ref_R1,ang_R)) + while(ang_R <= ref_R1 && !acc.checkAngle(ref_R1,ang_R) && mode == OP_NORMAL) { ane.checkWind(&mode); if(timer_read_ms(t_disp) >= LCD_RRATE){ - topL = (flag_flas)? "NORMAL:R1 <->" : "NORMAL:R1 <<->>"; + topL = (flag_flas)? "NORMAL:R1 <=>" : "NORMAL:R1 <-=->"; flag_flas = !flag_flas; - botL = Misc::itos((int)ane.getWind(&flag_disp),3) + " kph"; + botL = Misc::itos((int)ane.getWind(&flag_disp),3) + "kph"; t_disp.reset(); t_disp.start(); } @@ -138,13 +138,13 @@ motor.moveForward(M1); ang_R = acc.getAngle(S_R1); } - while(ang_R >= ref_R1 && !acc.checkAngle(ref_R1,ang_R)) + while(ang_R >= ref_R1 && !acc.checkAngle(ref_R1,ang_R) && mode == OP_NORMAL) { ane.checkWind(&mode); if(timer_read_ms(t_disp) >= LCD_RRATE){ - topL = (flag_flas)? "NORMAL:R1 >>-<<" : "NORMAL:R1 > - <"; + topL = (flag_flas)? "NORMAL:R1 > = < " : "NORMAL:R1 ->=<-"; flag_flas = !flag_flas; - botL = Misc::itos((int)ane.getWind(&flag_disp),3) + " kph"; + botL = Misc::itos((int)ane.getWind(&flag_disp),3) + "kph"; t_disp.reset(); t_disp.start(); } @@ -158,13 +158,13 @@ //Moving Reflector 2 ang_R = acc.getAngle(S_R2); - while(ang_R <= ref_R2 && !acc.checkAngle(ref_R2,ang_R)) + while(ang_R <= ref_R2 && !acc.checkAngle(ref_R2,ang_R) && mode == OP_NORMAL) { ane.checkWind(&mode); if(timer_read_ms(t_disp) >= LCD_RRATE){ - topL = (flag_flas)? "NORMAL:R2 <->" : "NORMAL:R2 <<->>"; + topL = (flag_flas)? "NORMAL:R2 <=>" : "NORMAL:R2 <-=->"; flag_flas = !flag_flas; - botL = Misc::itos((int)ane.getWind(&flag_disp),3) + " kph"; + botL = Misc::itos((int)ane.getWind(&flag_disp),3) + "kph"; t_disp.reset(); t_disp.start(); } @@ -174,13 +174,13 @@ motor.moveForward(M2); ang_R = acc.getAngle(S_R2); } - while(ang_R >= ref_R2 && !acc.checkAngle(ref_R2,ang_R)) + while(ang_R >= ref_R2 && !acc.checkAngle(ref_R2,ang_R) && mode == OP_NORMAL) { ane.checkWind(&mode); if(timer_read_ms(t_disp) >= LCD_RRATE){ - topL = (flag_flas)? "NORMAL:R2 >>-<<" : "NORMAL:R2 > - <"; + topL = (flag_flas)? "NORMAL:R2 > = < " : "NORMAL:R2 ->=<-"; flag_flas = !flag_flas; - botL = Misc::itos((int)ane.getWind(&flag_disp),3) + " kph"; + botL = Misc::itos((int)ane.getWind(&flag_disp),3) + "kph"; t_disp.reset(); t_disp.start(); } @@ -203,9 +203,10 @@ //////////////////////////////////////////////////////////////////////////////// case OP_WIND:{ ane.checkWind(&mode); - topL = "WIND SAFETY"; if(timer_read_ms(t_disp) >= LCD_RRATE){ - botL = Misc::itos((int)ane.getWind(&flag_disp)) + " kph"; + topL = (flag_flas)? "WIND SAFETY *!*" : "WIND SAFETY"; + flag_flas = !flag_flas; + botL = Misc::itos((int)ane.getWind(&flag_disp),3) + "kph"; t_disp.reset(); t_disp.start(); } @@ -224,7 +225,7 @@ } //////////////////////////////////////////////////////////////////////////////// case OP_MANUAL1:{ - topL = "MANUAL: M1"; + topL = "MANUAL:M1"; botL = ""; if(flag_disp){ lcd.LCD_display(topL,botL); @@ -247,25 +248,31 @@ } //////////////////////////////////////////////////////////////////// - flag_disp = 1; while(bt_inc.read()) //Extend { - if(flag_disp){ + if(timer_read_ms(t_disp) >= LCD_RRATE){ + topL = (flag_flas)? "MANUAL:M1 <=> " : "MANUAL:M1 <-=->"; + flag_flas = !flag_flas; + t_disp.reset(); + t_disp.start(); botL = "EXTENDING"; lcd.LCD_display(topL,botL); } + flag_idle = 0; - flag_disp = 0; motor.moveForward(M1); } while(bt_dec.read()) //Retract { - if(flag_disp){ + if(timer_read_ms(t_disp) >= LCD_RRATE){ + topL = (flag_flas)? "MANUAL:M1 > = <" : "MANUAL:M1 ->=<-"; + flag_flas = !flag_flas; + t_disp.reset(); + t_disp.start(); botL = "RETRACTING"; lcd.LCD_display(topL,botL); } flag_idle = 0; - flag_disp = 0; motor.moveBackward(M1); } if(!bt_inc.read() && !bt_dec.read() && !flag_disp) @@ -273,11 +280,12 @@ flag_disp = 1; motor.stop(); } + flag_time = 1; break; } //////////////////////////////////////////////////////////////////////////////// case OP_MANUAL2:{ - topL = "MANUAL: M2"; + topL = "MANUAL:M2"; botL = ""; if(flag_disp){ lcd.LCD_display(topL,botL); @@ -300,32 +308,99 @@ } //////////////////////////////////////////////////////////////////// - flag_disp = 1; while(bt_inc.read()) //Extend { - if(flag_disp){ + if(timer_read_ms(t_disp) >= LCD_RRATE){ + topL = (flag_flas)? "MANUAL:M2 <=> " : "MANUAL:M2 <-=->"; + flag_flas = !flag_flas; + t_disp.reset(); + t_disp.start(); botL = "EXTENDING"; lcd.LCD_display(topL,botL); } + flag_idle = 0; - flag_disp = 0; - motor.moveForward(M2); + motor.moveForward(M1); } while(bt_dec.read()) //Retract { - if(flag_disp){ + if(timer_read_ms(t_disp) >= LCD_RRATE){ + topL = (flag_flas)? "MANUAL:M2 > = <" : "MANUAL:M2 ->=<-"; + flag_flas = !flag_flas; + t_disp.reset(); + t_disp.start(); botL = "RETRACTING"; lcd.LCD_display(topL,botL); } flag_idle = 0; - flag_disp = 0; - motor.moveBackward(M2); + motor.moveBackward(M1); } if(!bt_inc.read() && !bt_dec.read() && !flag_disp) { flag_disp = 1; motor.stop(); } + flag_time = 1; + break; + } +//////////////////////////////////////////////////////////////////////////////// + case OP_MANUAL_ALL:{ + topL = "MANUAL:ALL"; + botL = ""; + 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_MANUAL_TIMEOUT) + { + mode = OP_NORMAL; + flag_disp = 1; + break; + } + //////////////////////////////////////////////////////////////////// + + while(bt_inc.read()) //Extend + { + if(timer_read_ms(t_disp) >= LCD_RRATE){ + topL = (flag_flas)? "MANUAL:ALL <=> " : "MANUAL:ALL <-=->"; + flag_flas = !flag_flas; + t_disp.reset(); + t_disp.start(); + botL = "EXTENDING"; + lcd.LCD_display(topL,botL); + } + + flag_idle = 0; + motor.moveForward(M1); + } + while(bt_dec.read()) //Retract + { + if(timer_read_ms(t_disp) >= LCD_RRATE){ + topL = (flag_flas)? "MANUAL:ALL > = <" : "MANUAL:ALL ->=<-"; + flag_flas = !flag_flas; + t_disp.reset(); + t_disp.start(); + botL = "RETRACTING"; + lcd.LCD_display(topL,botL); + } + flag_idle = 0; + motor.moveBackward(M1); + } + if(!bt_inc.read() && !bt_dec.read() && !flag_disp) + { + flag_disp = 1; + motor.stop(); + } + flag_time = 1; break; } //////////////////////////////////////////////////////////////////////////////// @@ -376,7 +451,6 @@ } flag_time = 1; //Set the system in motion once done adjusting - break; } }