SysBee v1

Dependencies:   C027_Support mbed

Fork of App_Pese_Ruche_SYSBEE by Sysbee

Committer:
tlegros
Date:
Thu Sep 13 08:54:00 2018 +0000
Revision:
8:3af661bcfcec
Parent:
7:95ddf8fa6260
Child:
9:4c09643fbfb9
r?vision de l'?tat "week"; ajout de la d?riv?e

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bennettmatt1977 0:15a06b50e14e 1 #include "mbed.h"
maxelior 1:5639bc1208d5 2 #include <string.h>
thomaspotier 5:d2702cbe5afe 3 //#include <LowPowerTimeout.h>
bennettmatt1977 0:15a06b50e14e 4
bennettmatt1977 0:15a06b50e14e 5 #include "GPS.h"
bennettmatt1977 0:15a06b50e14e 6 #include "MDM.h"
thomaspotier 4:bee94a4094b6 7
thomaspotier 4:bee94a4094b6 8 // sim pin code
maxelior 1:5639bc1208d5 9 #define SIMPIN "1234"
bennettmatt1977 0:15a06b50e14e 10 #define APN NULL
bennettmatt1977 0:15a06b50e14e 11 #define USERNAME NULL
maxelior 1:5639bc1208d5 12 #define PASSWORD NULL
maxelior 2:57d040afa937 13
thomaspotier 4:bee94a4094b6 14 // size of the average buffer (more means more averaged)
thomaspotier 5:d2702cbe5afe 15 #define AVERAGING_SIZE 500
thomaspotier 4:bee94a4094b6 16 // time between each capture in us
thomaspotier 5:d2702cbe5afe 17 #define AVERAGING_TIME 500
maxelior 2:57d040afa937 18
Cosi 7:95ddf8fa6260 19 /*
Cosi 7:95ddf8fa6260 20 // time between each measure in s
Cosi 6:b69c4870db2c 21 #define MEASURE_INTERVAL (10 * 60)
thomaspotier 5:d2702cbe5afe 22 // time between each averaging in s
Cosi 6:b69c4870db2c 23 #define AVERAGE_INTERVAL (24 * 60 * 60)
Cosi 6:b69c4870db2c 24 //WEEK measure time interval
Cosi 6:b69c4870db2c 25 #define WEEK_INTERVALL (7 * 24 * 60 * 60)
Cosi 7:95ddf8fa6260 26 */
Cosi 7:95ddf8fa6260 27
Cosi 7:95ddf8fa6260 28 //Test intervals :
Cosi 7:95ddf8fa6260 29 #define MEASURE_INTERVAL 5
Cosi 7:95ddf8fa6260 30 #define AVERAGE_INTERVAL 20
Cosi 7:95ddf8fa6260 31 #define WEEK_INTERVAL (2 * 60)
Cosi 7:95ddf8fa6260 32
thomaspotier 5:d2702cbe5afe 33 // number of measure before average
thomaspotier 5:d2702cbe5afe 34 #define AVERAGE_COUNT ((int)(AVERAGE_INTERVAL / MEASURE_INTERVAL))
thomaspotier 4:bee94a4094b6 35
Cosi 6:b69c4870db2c 36 #define WEEK_COUNT ((int)(WEEK_INTERVAL / AVERAGE_INTERVAL))
Cosi 6:b69c4870db2c 37
tlegros 8:3af661bcfcec 38 #define SEUIL 0.5
tlegros 8:3af661bcfcec 39
Cosi 6:b69c4870db2c 40 //#define SENSOR_OFFSET 6.1f
Cosi 6:b69c4870db2c 41 //#define SENSOR_FACTOR 39.0f
Cosi 6:b69c4870db2c 42 #define SENSOR_OFFSET 9.4f
Cosi 6:b69c4870db2c 43 #define SENSOR_FACTOR 26.3f
thomaspotier 4:bee94a4094b6 44
thomaspotier 4:bee94a4094b6 45 // weight difference needed to send sms
thomaspotier 4:bee94a4094b6 46 #define DIFF_THRESHOLD 0.4f
maxelior 3:8b90a40df4db 47
thomaspotier 4:bee94a4094b6 48 // states of the hive
thomaspotier 4:bee94a4094b6 49 typedef enum E_HIVE_STATE {
thomaspotier 5:d2702cbe5afe 50 HIVE_STATE_INIT = 0,
Cosi 6:b69c4870db2c 51 HIVE_STATE_STANDBY,
Cosi 6:b69c4870db2c 52 HIVE_STATE_WEEK,
Cosi 7:95ddf8fa6260 53 HIVE_STATE_DAILY,
thomaspotier 5:d2702cbe5afe 54 HIVE_STATE_MEASURE,
thomaspotier 5:d2702cbe5afe 55 HIVE_STATE_NOTHING_NEW,
thomaspotier 5:d2702cbe5afe 56 HIVE_STATE_HONEY,
thomaspotier 5:d2702cbe5afe 57 HIVE_STATE_PROBLEM_SPRING,
thomaspotier 4:bee94a4094b6 58 } t_hive_state;
maxelior 3:8b90a40df4db 59
thomaspotier 5:d2702cbe5afe 60 t_hive_state current_state = HIVE_STATE_INIT;
thomaspotier 4:bee94a4094b6 61
thomaspotier 4:bee94a4094b6 62 // buffer used to create message content
thomaspotier 4:bee94a4094b6 63 char buffer[1024];
maxelior 3:8b90a40df4db 64
thomaspotier 5:d2702cbe5afe 65 float average_values[AVERAGE_COUNT] = {0.0f};
tlegros 8:3af661bcfcec 66 float week_values[WEEK_COUNT] = {0.0f};
Cosi 7:95ddf8fa6260 67 //float diff_values[AVERAGE_COUNT] = {0.0f};
thomaspotier 5:d2702cbe5afe 68 float last_average = 0;
Cosi 6:b69c4870db2c 69 float week_last_average = 0;
thomaspotier 5:d2702cbe5afe 70 float current_average = 0;
Cosi 7:95ddf8fa6260 71 float week_average = 0;
thomaspotier 5:d2702cbe5afe 72 float current_average_diff = 0;
Cosi 6:b69c4870db2c 73 float week_average_diff = 0;
thomaspotier 5:d2702cbe5afe 74 float current_measure_diff = 0;
thomaspotier 5:d2702cbe5afe 75 unsigned int average_ticks_passed = 0;
Cosi 6:b69c4870db2c 76 unsigned int week_ticks_passed = 0;
Cosi 7:95ddf8fa6260 77 int size_tab = 0;
Cosi 7:95ddf8fa6260 78 int time_diff = 0;
Cosi 7:95ddf8fa6260 79
Cosi 7:95ddf8fa6260 80 //void init_modem(void);
thomaspotier 4:bee94a4094b6 81
thomaspotier 4:bee94a4094b6 82 // analog read of sensor board output
thomaspotier 4:bee94a4094b6 83 AnalogIn sensor(PC_5);
thomaspotier 4:bee94a4094b6 84
thomaspotier 4:bee94a4094b6 85 // phone number for sms (Cosima DORLAND)
Cosi 6:b69c4870db2c 86 //const char phone_number[] = "0680182150";
thomaspotier 5:d2702cbe5afe 87 const char phone_number[] = "0786074814";
thomaspotier 4:bee94a4094b6 88
thomaspotier 4:bee94a4094b6 89 // Serial object for pc communications
thomaspotier 4:bee94a4094b6 90 Serial pc(USBTX, USBRX);
maxelior 1:5639bc1208d5 91
thomaspotier 4:bee94a4094b6 92 // modem object for sms communications
thomaspotier 4:bee94a4094b6 93 MDMSerial modem;
thomaspotier 4:bee94a4094b6 94
thomaspotier 5:d2702cbe5afe 95 // sleep utils
thomaspotier 5:d2702cbe5afe 96 Timeout sleep_timout;
thomaspotier 5:d2702cbe5afe 97
thomaspotier 5:d2702cbe5afe 98 bool awake = true;
thomaspotier 5:d2702cbe5afe 99
thomaspotier 4:bee94a4094b6 100 // led for test blink
thomaspotier 4:bee94a4094b6 101 DigitalOut led(LED1);
thomaspotier 4:bee94a4094b6 102
thomaspotier 4:bee94a4094b6 103
thomaspotier 5:d2702cbe5afe 104 void blink(void)
thomaspotier 4:bee94a4094b6 105 {
thomaspotier 4:bee94a4094b6 106 led.write(1);
thomaspotier 4:bee94a4094b6 107 wait(0.2);
thomaspotier 4:bee94a4094b6 108 led.write(0);
maxelior 2:57d040afa937 109 }
maxelior 1:5639bc1208d5 110
thomaspotier 5:d2702cbe5afe 111 void wake_up(void)
thomaspotier 5:d2702cbe5afe 112 {
thomaspotier 5:d2702cbe5afe 113 awake = true;
thomaspotier 5:d2702cbe5afe 114 }
thomaspotier 5:d2702cbe5afe 115
thomaspotier 5:d2702cbe5afe 116 void power_sleep(float time)
thomaspotier 5:d2702cbe5afe 117 {
thomaspotier 5:d2702cbe5afe 118 awake = false;
thomaspotier 5:d2702cbe5afe 119 sleep_timout.attach(wake_up, time);
thomaspotier 5:d2702cbe5afe 120 pc.printf("Going to sleep !\n\r");
thomaspotier 5:d2702cbe5afe 121 while (!awake) sleep();
thomaspotier 5:d2702cbe5afe 122 pc.printf("Woke up !\n\r");
thomaspotier 5:d2702cbe5afe 123 }
thomaspotier 5:d2702cbe5afe 124
thomaspotier 4:bee94a4094b6 125 // send a sms to the phone number
thomaspotier 4:bee94a4094b6 126 void send_message(char msg[])
thomaspotier 4:bee94a4094b6 127 {
thomaspotier 4:bee94a4094b6 128 MDMParser::DevStatus devStatus = {};
thomaspotier 4:bee94a4094b6 129 MDMParser::NetStatus netStatus = {};
maxelior 2:57d040afa937 130
thomaspotier 4:bee94a4094b6 131 // log sms sending to pc
thomaspotier 5:d2702cbe5afe 132 pc.printf("\x1b[34mSMS: %s\n\r\x1b[0m", msg);
thomaspotier 4:bee94a4094b6 133
thomaspotier 4:bee94a4094b6 134 while (!modem.checkNetStatus(&netStatus)) {
thomaspotier 5:d2702cbe5afe 135 pc.printf("\x1b[34mMODEM checkNetStatus failed...\n\r\x1b[0m");
thomaspotier 4:bee94a4094b6 136 wait(1);
thomaspotier 4:bee94a4094b6 137 }
thomaspotier 4:bee94a4094b6 138 modem.dumpDevStatus(&devStatus);
thomaspotier 4:bee94a4094b6 139 while (!modem.registerNet(&netStatus)) {
thomaspotier 5:d2702cbe5afe 140 pc.printf("\x1b[34mMODEM registerNet failed...\n\r\x1b[0m");
thomaspotier 4:bee94a4094b6 141 wait(1);
thomaspotier 4:bee94a4094b6 142 }
thomaspotier 4:bee94a4094b6 143 modem.dumpNetStatus(&netStatus);
thomaspotier 4:bee94a4094b6 144 modem.smsSend(phone_number ,msg);
maxelior 2:57d040afa937 145 }
maxelior 1:5639bc1208d5 146
thomaspotier 4:bee94a4094b6 147 // return the current calibrated weight
thomaspotier 4:bee94a4094b6 148 float get_weight()
thomaspotier 4:bee94a4094b6 149 {
thomaspotier 4:bee94a4094b6 150 float weight;
thomaspotier 4:bee94a4094b6 151
thomaspotier 4:bee94a4094b6 152 // weight is the sensor output in volts
thomaspotier 4:bee94a4094b6 153 weight = sensor.read() * 3.3f;
thomaspotier 4:bee94a4094b6 154 // return calibrated result
thomaspotier 4:bee94a4094b6 155 return (weight * SENSOR_FACTOR - SENSOR_OFFSET);
thomaspotier 4:bee94a4094b6 156 }
thomaspotier 4:bee94a4094b6 157
thomaspotier 4:bee94a4094b6 158 // return an averaged weight (time consuming function)
thomaspotier 4:bee94a4094b6 159 float get_averaged_weight()
thomaspotier 4:bee94a4094b6 160 {
thomaspotier 4:bee94a4094b6 161 float average = 0;
thomaspotier 4:bee94a4094b6 162 int i;
thomaspotier 4:bee94a4094b6 163
thomaspotier 4:bee94a4094b6 164 for(i = 0; i < AVERAGING_SIZE; i++) {
thomaspotier 4:bee94a4094b6 165 average += get_weight();
thomaspotier 4:bee94a4094b6 166 wait_us(AVERAGING_TIME);
thomaspotier 4:bee94a4094b6 167 }
thomaspotier 4:bee94a4094b6 168 return (average / AVERAGING_SIZE);
thomaspotier 4:bee94a4094b6 169 }
thomaspotier 4:bee94a4094b6 170
Cosi 7:95ddf8fa6260 171 // return average of differential
Cosi 7:95ddf8fa6260 172 float get_differential_average (float tab[])
Cosi 7:95ddf8fa6260 173 {
Cosi 7:95ddf8fa6260 174 int i = 1;
Cosi 7:95ddf8fa6260 175 float differential = 0;
Cosi 7:95ddf8fa6260 176
Cosi 7:95ddf8fa6260 177 for ( i = 1; i < size_tab; i++)
Cosi 7:95ddf8fa6260 178 differential += (tab[i] - tab[i-1])/time_diff;
Cosi 7:95ddf8fa6260 179
tlegros 8:3af661bcfcec 180 return differential/(size_tab -1);
tlegros 8:3af661bcfcec 181 }
tlegros 8:3af661bcfcec 182 /*
tlegros 8:3af661bcfcec 183 //return the real daily average
tlegros 8:3af661bcfcec 184 float true_average(float tab[], float differential)
tlegros 8:3af661bcfcec 185 {
tlegros 8:3af661bcfcec 186 int i;
tlegros 8:3af661bcfcec 187 float dpoint, avg = 0, error = 0;
tlegros 8:3af661bcfcec 188 for(i = 1; i < size_tab; i++)
tlegros 8:3af661bcfcec 189 {
tlegros 8:3af661bcfcec 190 dpoint = (tab[i] - tab[i-1])/time_diff;
tlegros 8:3af661bcfcec 191 if ((differential + SEUIL > dpoint) && (differential - SEUIL < dpoint))
tlegros 8:3af661bcfcec 192 avg += tab[i];
tlegros 8:3af661bcfcec 193 else
tlegros 8:3af661bcfcec 194 error ++;
tlegros 8:3af661bcfcec 195 }
tlegros 8:3af661bcfcec 196 avg = avg/(AVERAGE_COUNT - (error +1));
tlegros 8:3af661bcfcec 197 return avg;
tlegros 8:3af661bcfcec 198 }
tlegros 8:3af661bcfcec 199 */
Cosi 7:95ddf8fa6260 200
Cosi 7:95ddf8fa6260 201 void init_modem(void)
Cosi 7:95ddf8fa6260 202 {
Cosi 7:95ddf8fa6260 203 MDMParser::DevStatus devStatus = {};
Cosi 7:95ddf8fa6260 204 MDMParser::NetStatus netStatus = {};
Cosi 7:95ddf8fa6260 205
Cosi 7:95ddf8fa6260 206 // retry from begining if something fails
Cosi 7:95ddf8fa6260 207 while (!modem.init(SIMPIN, &devStatus, D4)) {
Cosi 7:95ddf8fa6260 208 pc.printf("\x1b[34m");
Cosi 7:95ddf8fa6260 209 pc.printf("MODEM init failed...\n\r");
Cosi 7:95ddf8fa6260 210 pc.printf("\x1b[0m");
Cosi 7:95ddf8fa6260 211 wait(1);
Cosi 7:95ddf8fa6260 212 }
Cosi 7:95ddf8fa6260 213 while (!modem.checkNetStatus(&netStatus)) {
Cosi 7:95ddf8fa6260 214 pc.printf("\x1b[34m");
Cosi 7:95ddf8fa6260 215 pc.printf("MODEM net_status failed...\n\r");
Cosi 7:95ddf8fa6260 216 pc.printf("\x1b[0m");
Cosi 7:95ddf8fa6260 217 wait(1);
tlegros 8:3af661bcfcec 218 }
Cosi 7:95ddf8fa6260 219 modem.dumpDevStatus(&devStatus);
Cosi 7:95ddf8fa6260 220 }
Cosi 7:95ddf8fa6260 221
Cosi 7:95ddf8fa6260 222
thomaspotier 4:bee94a4094b6 223 // automata calculations
maxelior 1:5639bc1208d5 224 void automate()
maxelior 1:5639bc1208d5 225 {
thomaspotier 4:bee94a4094b6 226 switch(current_state) {
thomaspotier 5:d2702cbe5afe 227 case HIVE_STATE_INIT:
Cosi 6:b69c4870db2c 228 // setting baud rate for serial communication with the pc
Cosi 6:b69c4870db2c 229 pc.baud(115200);
Cosi 6:b69c4870db2c 230 pc.printf("TEST\n\r");
Cosi 6:b69c4870db2c 231 init_modem();
Cosi 6:b69c4870db2c 232 current_state = HIVE_STATE_STANDBY;
Cosi 6:b69c4870db2c 233 break;
Cosi 6:b69c4870db2c 234
Cosi 6:b69c4870db2c 235 case HIVE_STATE_STANDBY:
thomaspotier 5:d2702cbe5afe 236 if (average_ticks_passed == AVERAGE_COUNT)
Cosi 7:95ddf8fa6260 237 current_state = HIVE_STATE_DAILY;
thomaspotier 5:d2702cbe5afe 238 else
thomaspotier 5:d2702cbe5afe 239 current_state = HIVE_STATE_MEASURE;
Cosi 7:95ddf8fa6260 240 power_sleep(MEASURE_INTERVAL);
Cosi 7:95ddf8fa6260 241 break;
Cosi 7:95ddf8fa6260 242
thomaspotier 5:d2702cbe5afe 243 case HIVE_STATE_MEASURE:
thomaspotier 5:d2702cbe5afe 244 average_values[average_ticks_passed] = get_averaged_weight();
tlegros 8:3af661bcfcec 245 week_values[week_ticks_passed] = get_averaged_weight();
thomaspotier 5:d2702cbe5afe 246 pc.printf("Weight is %02.2fkg\n\r", average_values[average_ticks_passed]);
thomaspotier 5:d2702cbe5afe 247 // if we are of the first measure use the one at the end of the list (last one)
thomaspotier 5:d2702cbe5afe 248 current_measure_diff = average_ticks_passed == 0 ? average_values[average_ticks_passed] - average_values[AVERAGE_COUNT - 1] : average_values[average_ticks_passed] - average_values[average_ticks_passed - 1];
thomaspotier 5:d2702cbe5afe 249 if (abs(current_measure_diff) > DIFF_THRESHOLD)
Cosi 6:b69c4870db2c 250 {
Cosi 6:b69c4870db2c 251 sprintf(buffer, "3 There has been a problem : %0.1fkg of change in %d minutes !", current_measure_diff, MEASURE_INTERVAL / 60);
Cosi 6:b69c4870db2c 252 send_message(buffer);
Cosi 6:b69c4870db2c 253 }
thomaspotier 5:d2702cbe5afe 254 else
Cosi 6:b69c4870db2c 255 current_state = HIVE_STATE_STANDBY;
Cosi 7:95ddf8fa6260 256 average_ticks_passed++;
Cosi 7:95ddf8fa6260 257 break;
Cosi 7:95ddf8fa6260 258
Cosi 7:95ddf8fa6260 259 case HIVE_STATE_DAILY:
Cosi 7:95ddf8fa6260 260 float dif_av = 0;
Cosi 7:95ddf8fa6260 261 size_tab = AVERAGE_COUNT;
Cosi 7:95ddf8fa6260 262 time_diff = MEASURE_INTERVAL;
thomaspotier 5:d2702cbe5afe 263 current_average = 0;
thomaspotier 5:d2702cbe5afe 264 for(int i = 0; i < average_ticks_passed; i++) {
thomaspotier 5:d2702cbe5afe 265 current_average += average_values[i];
maxelior 1:5639bc1208d5 266 }
thomaspotier 5:d2702cbe5afe 267 current_average /= average_ticks_passed;
tlegros 8:3af661bcfcec 268 dif_av = get_differential_average(average_values);
tlegros 8:3af661bcfcec 269 current_average = average_values[0] + dif_av * (average_ticks_passed -1);
thomaspotier 5:d2702cbe5afe 270 current_average_diff = current_average - last_average;
thomaspotier 5:d2702cbe5afe 271 last_average = current_average;
Cosi 7:95ddf8fa6260 272
tlegros 8:3af661bcfcec 273
Cosi 6:b69c4870db2c 274 if (current_average_diff > DIFF_THRESHOLD)
Cosi 6:b69c4870db2c 275 {
Cosi 6:b69c4870db2c 276 sprintf(buffer, "1 There is more and more honey in the hive ! %0.1fkg of change in %d hours !", current_average_diff, AVERAGE_INTERVAL / 60);
Cosi 6:b69c4870db2c 277 send_message(buffer);
Cosi 6:b69c4870db2c 278 }
Cosi 6:b69c4870db2c 279 else if (current_average_diff < -DIFF_THRESHOLD)
Cosi 6:b69c4870db2c 280 {
Cosi 6:b69c4870db2c 281 sprintf(buffer, "2 There is less honey ! %0.1fkg of change in %d hours !", current_average_diff, AVERAGE_INTERVAL / 60);
Cosi 6:b69c4870db2c 282 send_message(buffer);
Cosi 6:b69c4870db2c 283 }
thomaspotier 5:d2702cbe5afe 284 else
Cosi 6:b69c4870db2c 285 {
Cosi 6:b69c4870db2c 286 sprintf(buffer, "0 Everything is fine ! %0.1fkg of change in %d hours !", current_average_diff, AVERAGE_INTERVAL / 60);
Cosi 6:b69c4870db2c 287 send_message(buffer);
Cosi 6:b69c4870db2c 288 }
thomaspotier 5:d2702cbe5afe 289 average_ticks_passed = 0;
Cosi 6:b69c4870db2c 290 current_state = HIVE_STATE_STANDBY;
thomaspotier 5:d2702cbe5afe 291 break;
Cosi 6:b69c4870db2c 292
Cosi 6:b69c4870db2c 293 case HIVE_STATE_WEEK:
Cosi 7:95ddf8fa6260 294 size_tab = 7;
Cosi 7:95ddf8fa6260 295 time_diff = WEEK_INTERVAL;
Cosi 6:b69c4870db2c 296 week_average = 0;
Cosi 6:b69c4870db2c 297 for(int i = 0; i < week_ticks_passed; i++) {
Cosi 6:b69c4870db2c 298 week_average += average_values[i];
Cosi 6:b69c4870db2c 299
Cosi 6:b69c4870db2c 300 }
Cosi 6:b69c4870db2c 301 week_average /= week_ticks_passed;
Cosi 6:b69c4870db2c 302 week_average_diff = week_average - week_last_average;
tlegros 8:3af661bcfcec 303 dif_av = get_differential_average(average_values);
tlegros 8:3af661bcfcec 304 current_average = week_values[0] + dif_av * (week_ticks_passed -1);
Cosi 6:b69c4870db2c 305 week_last_average = week_average;
Cosi 6:b69c4870db2c 306 if (week_average_diff > DIFF_THRESHOLD)
Cosi 6:b69c4870db2c 307 {
Cosi 6:b69c4870db2c 308 sprintf(buffer, "4 There is more and more honey in the hive over the week! %0.1fkg of change in %d hours !", week_average_diff, WEEK_INTERVAL / 60);
Cosi 6:b69c4870db2c 309 send_message(buffer);
Cosi 6:b69c4870db2c 310 }
Cosi 6:b69c4870db2c 311 else if (week_average_diff < -DIFF_THRESHOLD)
Cosi 6:b69c4870db2c 312 {
Cosi 7:95ddf8fa6260 313 sprintf(buffer, "5 There is less honey over the last week ! %0.1fkg of change in %d hours !", week_average_diff, WEEK_INTERVAL / 60);
Cosi 6:b69c4870db2c 314 send_message(buffer);
Cosi 6:b69c4870db2c 315 }
Cosi 6:b69c4870db2c 316 else
Cosi 6:b69c4870db2c 317 {
Cosi 6:b69c4870db2c 318 sprintf(buffer, "6 Everything was fine over the last week ! %0.1fkg of change in %d hours !", week_average_diff, WEEK_INTERVAL / 60);
Cosi 6:b69c4870db2c 319 send_message(buffer);
Cosi 6:b69c4870db2c 320 }
Cosi 6:b69c4870db2c 321 week_ticks_passed = 0;
Cosi 6:b69c4870db2c 322 current_state = HIVE_STATE_STANDBY;
thomaspotier 5:d2702cbe5afe 323 break;
Cosi 6:b69c4870db2c 324
Cosi 6:b69c4870db2c 325
Cosi 6:b69c4870db2c 326
thomaspotier 4:bee94a4094b6 327 default:
thomaspotier 5:d2702cbe5afe 328 pc.printf("Error...");
maxelior 2:57d040afa937 329 break;
maxelior 1:5639bc1208d5 330 }
maxelior 1:5639bc1208d5 331 }
bennettmatt1977 0:15a06b50e14e 332
bennettmatt1977 0:15a06b50e14e 333 int main(void)
bennettmatt1977 0:15a06b50e14e 334 {
Cosi 6:b69c4870db2c 335
Cosi 6:b69c4870db2c 336
thomaspotier 4:bee94a4094b6 337
thomaspotier 4:bee94a4094b6 338 // main loop
maxelior 1:5639bc1208d5 339 while(1) {
thomaspotier 4:bee94a4094b6 340 // blink once for each measure
thomaspotier 5:d2702cbe5afe 341 //blink();
thomaspotier 4:bee94a4094b6 342 // getting sensor values
thomaspotier 4:bee94a4094b6 343 // acquisition();
thomaspotier 4:bee94a4094b6 344 // changing state of automata according to read values
maxelior 1:5639bc1208d5 345 automate();
bennettmatt1977 0:15a06b50e14e 346 }
bennettmatt1977 0:15a06b50e14e 347 }
maxelior 1:5639bc1208d5 348
maxelior 1:5639bc1208d5 349
maxelior 1:5639bc1208d5 350
maxelior 1:5639bc1208d5 351
maxelior 1:5639bc1208d5 352