Project aiming to make a self-controlled solar reflector

Dependencies:   Accelerometer LCD Inverter Algorithm MotorDriver Anemometer GUI ArduinoJson Misc Definitions Pushbutton WebSocketClient temp_fan

Committer:
khaiminhvn
Date:
Fri Mar 12 00:57:44 2021 +0000
Revision:
7:2b6438e586e6
Parent:
6:0b7a6e51cdf8
Child:
8:a1481d5f0572
Updated mbed, display working, without acc/motordriver;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khaiminhvn 0:74d6e93ec977 1 /*
khaiminhvn 0:74d6e93ec977 2 For settings of system behaviour, see Defs_sett.h
khaiminhvn 0:74d6e93ec977 3 For pin assignment list, see PinAssignment.h
khaiminhvn 0:74d6e93ec977 4 */
khaiminhvn 0:74d6e93ec977 5
khaiminhvn 0:74d6e93ec977 6 //INCLUDES
khaiminhvn 0:74d6e93ec977 7 #include "mbed.h"
khaiminhvn 6:0b7a6e51cdf8 8 #include "stdio.h"
khaiminhvn 2:944511c6c55f 9 #include "string" // std::string, std::to_string
khaiminhvn 0:74d6e93ec977 10 #include "Accelerometer.h"
khaiminhvn 0:74d6e93ec977 11 #include "Anemometer.h"
khaiminhvn 0:74d6e93ec977 12 #include "Algorithm.h"
khaiminhvn 0:74d6e93ec977 13 #include "MotorDriver.h"
khaiminhvn 0:74d6e93ec977 14 #include "Defs_Sett.h"
khaiminhvn 0:74d6e93ec977 15 #include "Pushbutton.h"
khaiminhvn 7:2b6438e586e6 16 #include "PinAssignment.h"
khaiminhvn 2:944511c6c55f 17 #include "LCD.h"
khaiminhvn 6:0b7a6e51cdf8 18 #include <string>
khaiminhvn 0:74d6e93ec977 19
khaiminhvn 0:74d6e93ec977 20 #define timer_read_s(x) chrono::duration_cast<chrono::seconds>((x).elapsed_time()).count()
khaiminhvn 0:74d6e93ec977 21
khaiminhvn 0:74d6e93ec977 22 //Initialize Global Variables
khaiminhvn 7:2b6438e586e6 23 I2C i2c(PIN_SDA,PIN_SCL);
khaiminhvn 0:74d6e93ec977 24 Anemometer ane; //
khaiminhvn 7:2b6438e586e6 25 //MotorDriver motor;
khaiminhvn 0:74d6e93ec977 26 LowPowerTimer t,t_mode;
khaiminhvn 7:2b6438e586e6 27 int mode = OP_CALIBRATION;
khaiminhvn 0:74d6e93ec977 28
khaiminhvn 1:07f86b4db069 29 Pushbutton bt_fn(PIN_BTFN,&mode);
khaiminhvn 1:07f86b4db069 30 Pushbutton bt_inc(PIN_BTINC);
khaiminhvn 1:07f86b4db069 31 Pushbutton bt_dec(PIN_BTDEC);
khaiminhvn 0:74d6e93ec977 32
khaiminhvn 0:74d6e93ec977 33 ////////////////////////////////////////////////////////////////////////////////
khaiminhvn 0:74d6e93ec977 34 ////////////////////////////////////////////////////////////////////////////////
khaiminhvn 0:74d6e93ec977 35 int main()
khaiminhvn 0:74d6e93ec977 36 {
khaiminhvn 7:2b6438e586e6 37 i2c.frequency(I2C_FREQ);
khaiminhvn 7:2b6438e586e6 38 //Accelerometer acc(&i2c); //Accelerometer
khaiminhvn 7:2b6438e586e6 39 LCD lcd(&i2c);
khaiminhvn 7:2b6438e586e6 40
khaiminhvn 0:74d6e93ec977 41 float ang_P,ang_R;
khaiminhvn 0:74d6e93ec977 42 float ref_R1,ref_R2;
khaiminhvn 0:74d6e93ec977 43 int flag_time = 1, flag_idle = 0;
khaiminhvn 0:74d6e93ec977 44 int t_elapsed;
khaiminhvn 0:74d6e93ec977 45 int wthres = WIND_THRES_INIT;
khaiminhvn 6:0b7a6e51cdf8 46 char buffer[16];
khaiminhvn 6:0b7a6e51cdf8 47
khaiminhvn 7:2b6438e586e6 48 string topL = "PUT SENSORS IN";
khaiminhvn 7:2b6438e586e6 49 string botL = "CALIBRATION SLOT";
khaiminhvn 0:74d6e93ec977 50
khaiminhvn 0:74d6e93ec977 51 t.start(); //Start timer
khaiminhvn 0:74d6e93ec977 52
khaiminhvn 6:0b7a6e51cdf8 53 lcd.LCD_display(topL, botL);
khaiminhvn 6:0b7a6e51cdf8 54
khaiminhvn 0:74d6e93ec977 55 while(1)
khaiminhvn 0:74d6e93ec977 56 {
khaiminhvn 0:74d6e93ec977 57 switch(mode)
khaiminhvn 0:74d6e93ec977 58 {
khaiminhvn 7:2b6438e586e6 59 case OP_PLACEMENT:{
khaiminhvn 7:2b6438e586e6 60 topL = "PUT SENSOR ON";
khaiminhvn 7:2b6438e586e6 61 botL = "PANEL&REFLECTORS";
khaiminhvn 7:2b6438e586e6 62 lcd.LCD_display(topL,botL);
khaiminhvn 7:2b6438e586e6 63
khaiminhvn 7:2b6438e586e6 64 break;
khaiminhvn 0:74d6e93ec977 65 }
khaiminhvn 0:74d6e93ec977 66 ////////////////////////////////////////////////////////////////////////////////
khaiminhvn 7:2b6438e586e6 67 case OP_NORMAL:{
khaiminhvn 7:2b6438e586e6 68 topL = "NORMAL";
khaiminhvn 7:2b6438e586e6 69 botL = "";
khaiminhvn 7:2b6438e586e6 70 lcd.LCD_display(topL,botL);
khaiminhvn 0:74d6e93ec977 71
khaiminhvn 7:2b6438e586e6 72 break;
khaiminhvn 0:74d6e93ec977 73 }
khaiminhvn 7:2b6438e586e6 74 ////////////////////////////////////////////////////////////////////////////////
khaiminhvn 7:2b6438e586e6 75 case OP_WIND:{
khaiminhvn 7:2b6438e586e6 76 ane.checkWind(&mode);
khaiminhvn 7:2b6438e586e6 77 topL = "WIND SAFETY";
khaiminhvn 7:2b6438e586e6 78 botL = "";
khaiminhvn 7:2b6438e586e6 79 lcd.LCD_display(topL,botL);
khaiminhvn 0:74d6e93ec977 80
khaiminhvn 7:2b6438e586e6 81 break;
khaiminhvn 0:74d6e93ec977 82 }
khaiminhvn 0:74d6e93ec977 83 ////////////////////////////////////////////////////////////////////////////////
khaiminhvn 7:2b6438e586e6 84 case OP_MANUAL1:{
khaiminhvn 7:2b6438e586e6 85 topL = "MANUAL: M1";
khaiminhvn 7:2b6438e586e6 86 botL = "";
khaiminhvn 7:2b6438e586e6 87 lcd.LCD_display(topL,botL);
khaiminhvn 0:74d6e93ec977 88
khaiminhvn 7:2b6438e586e6 89 break;
khaiminhvn 0:74d6e93ec977 90 }
khaiminhvn 7:2b6438e586e6 91 ////////////////////////////////////////////////////////////////////////////////
khaiminhvn 7:2b6438e586e6 92 case OP_MANUAL2:{
khaiminhvn 7:2b6438e586e6 93 topL = "MANUAL: M2";
khaiminhvn 7:2b6438e586e6 94 botL = "";
khaiminhvn 7:2b6438e586e6 95 lcd.LCD_display(topL,botL);
khaiminhvn 7:2b6438e586e6 96
khaiminhvn 0:74d6e93ec977 97 break;
khaiminhvn 0:74d6e93ec977 98 }
khaiminhvn 7:2b6438e586e6 99 ////////////////////////////////////////////////////////////////////////////////
khaiminhvn 7:2b6438e586e6 100 case OP_WSETTING:{
khaiminhvn 7:2b6438e586e6 101 topL = "Threshold:";
khaiminhvn 7:2b6438e586e6 102 botL = "";
khaiminhvn 7:2b6438e586e6 103 lcd.LCD_display(topL,botL);
khaiminhvn 0:74d6e93ec977 104
khaiminhvn 7:2b6438e586e6 105 break;
khaiminhvn 0:74d6e93ec977 106 }
khaiminhvn 0:74d6e93ec977 107 }
khaiminhvn 7:2b6438e586e6 108 wait_us(LOOP_DELAY);
khaiminhvn 0:74d6e93ec977 109 }
khaiminhvn 0:74d6e93ec977 110
khaiminhvn 0:74d6e93ec977 111 }
khaiminhvn 0:74d6e93ec977 112 ////////////////////////////////////////////////////////////////////////////////
khaiminhvn 7:2b6438e586e6 113 ////////////////////////////////////////////////////////////////////////////////