Test code for Apollo System

Dependencies:   BME280 DS1820

Committer:
wakestrap
Date:
Fri Jun 19 18:54:25 2020 +0000
Revision:
0:632db6388a5d
removed GPS module

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wakestrap 0:632db6388a5d 1 /*******************************************************************************
wakestrap 0:632db6388a5d 2 Commands:
wakestrap 0:632db6388a5d 3
wakestrap 0:632db6388a5d 4 AM=x where x =1|0 Sets Mode. Mode 0 = CC, Mode 1 = Flash
wakestrap 0:632db6388a5d 5 AL=XY X=load channel (0-3) Artimes L1, Artemis L2, Bia L1, Bia L2 - Y = 0|1 On or Off
wakestrap 0:632db6388a5d 6 AFY=X.XX Where Y = channel and X.XX = flash rate between 0 and 1
wakestrap 0:632db6388a5d 7 AEY=X where Y = channel and X = 0|1 On or Off
wakestrap 0:632db6388a5d 8 AT = TemP reading
wakestrap 0:632db6388a5d 9 AP = Pressure Reading
wakestrap 0:632db6388a5d 10 AH = Humidty reading
wakestrap 0:632db6388a5d 11
wakestrap 0:632db6388a5d 12 *******************************************************************************/
wakestrap 0:632db6388a5d 13 #include "mbed.h"
wakestrap 0:632db6388a5d 14 #include "BME280.h"
wakestrap 0:632db6388a5d 15 #include "DS1820.h"
wakestrap 0:632db6388a5d 16
wakestrap 0:632db6388a5d 17 #define GPIO1 PB_12
wakestrap 0:632db6388a5d 18
wakestrap 0:632db6388a5d 19 #define GPIO2 PB_9
wakestrap 0:632db6388a5d 20
wakestrap 0:632db6388a5d 21 #define GPIO3 PB_8
wakestrap 0:632db6388a5d 22
wakestrap 0:632db6388a5d 23 #define GPIO4 PB_5
wakestrap 0:632db6388a5d 24
wakestrap 0:632db6388a5d 25 #define GPIO5 PB_4
wakestrap 0:632db6388a5d 26
wakestrap 0:632db6388a5d 27 #define GPIO6 PB_3
wakestrap 0:632db6388a5d 28
wakestrap 0:632db6388a5d 29 #define GPIO7 PD_2 //PD_2
wakestrap 0:632db6388a5d 30
wakestrap 0:632db6388a5d 31 #define GPIO8 PC_8
wakestrap 0:632db6388a5d 32
wakestrap 0:632db6388a5d 33 #define GPIO9 PC_7
wakestrap 0:632db6388a5d 34
wakestrap 0:632db6388a5d 35 #define GPIO10 PA_15
wakestrap 0:632db6388a5d 36
wakestrap 0:632db6388a5d 37 #define GPIO11 PC_9
wakestrap 0:632db6388a5d 38
wakestrap 0:632db6388a5d 39 #define GPIO12 PC_6
wakestrap 0:632db6388a5d 40
wakestrap 0:632db6388a5d 41 #define LOAD0 PA_1
wakestrap 0:632db6388a5d 42 #define LOAD1 PA_6
wakestrap 0:632db6388a5d 43
wakestrap 0:632db6388a5d 44 DigitalOut flash0(GPIO1);
wakestrap 0:632db6388a5d 45 DigitalOut flash1(GPIO5);
wakestrap 0:632db6388a5d 46 DigitalOut flash2(GPIO2);
wakestrap 0:632db6388a5d 47 DigitalOut flash3(GPIO6);
wakestrap 0:632db6388a5d 48 DigitalOut flash4(GPIO3);
wakestrap 0:632db6388a5d 49 DigitalOut flash5(GPIO7);
wakestrap 0:632db6388a5d 50 DigitalOut flash6(GPIO4);
wakestrap 0:632db6388a5d 51 DigitalOut flash7(GPIO8);
wakestrap 0:632db6388a5d 52
wakestrap 0:632db6388a5d 53 DigitalOut GPSEnable(GPIO12);
wakestrap 0:632db6388a5d 54
wakestrap 0:632db6388a5d 55 DigitalOut load0(LOAD0);
wakestrap 0:632db6388a5d 56 DigitalOut load1(LOAD0);
wakestrap 0:632db6388a5d 57 DigitalOut SVLoad1(GPIO11);
wakestrap 0:632db6388a5d 58 DigitalOut SVLoad2(GPIO11);
wakestrap 0:632db6388a5d 59
wakestrap 0:632db6388a5d 60 InterruptIn syncLine(PC_13);
wakestrap 0:632db6388a5d 61
wakestrap 0:632db6388a5d 62 float flashStat[32] = {0}; //First 8 are Flash EN, Next 8 are next flash, final 8 are Flash rate.
wakestrap 0:632db6388a5d 63 PwmOut dimming(GPIO10);
wakestrap 0:632db6388a5d 64 DigitalOut flashMode(GPIO9);
wakestrap 0:632db6388a5d 65
wakestrap 0:632db6388a5d 66 BME280 BME280(PB_7, PB_6);
wakestrap 0:632db6388a5d 67
wakestrap 0:632db6388a5d 68 Timer t;
wakestrap 0:632db6388a5d 69
wakestrap 0:632db6388a5d 70 Serial lantronix(PA_2, PA_3);
wakestrap 0:632db6388a5d 71
wakestrap 0:632db6388a5d 72 DS1820 extTemp1(PC_3);
wakestrap 0:632db6388a5d 73 DS1820 extTemp2(PA_7);
wakestrap 0:632db6388a5d 74 DS1820 extTemp3(PA_0);
wakestrap 0:632db6388a5d 75 DS1820 extTemp4(PB_0);
wakestrap 0:632db6388a5d 76
wakestrap 0:632db6388a5d 77 DigitalIn extTemp1Pin(PC_3);
wakestrap 0:632db6388a5d 78 DigitalIn extTemp2Pin(PA_7);
wakestrap 0:632db6388a5d 79 DigitalIn extTemp3Pin(PA_0);
wakestrap 0:632db6388a5d 80 DigitalIn extTemp4Pin(PB_0);
wakestrap 0:632db6388a5d 81
wakestrap 0:632db6388a5d 82 int commandFlag = 0;
wakestrap 0:632db6388a5d 83 int messageProcessFlag = 0;
wakestrap 0:632db6388a5d 84
wakestrap 0:632db6388a5d 85 int debugOut = 0;
wakestrap 0:632db6388a5d 86 float flashrate = 0;
wakestrap 0:632db6388a5d 87
wakestrap 0:632db6388a5d 88 char msgBuffer[20] = {0};
wakestrap 0:632db6388a5d 89 int msgBufferCount = 0;
wakestrap 0:632db6388a5d 90
wakestrap 0:632db6388a5d 91 int singleFlash = 0;
wakestrap 0:632db6388a5d 92
wakestrap 0:632db6388a5d 93 int temploop = 0;
wakestrap 0:632db6388a5d 94
wakestrap 0:632db6388a5d 95 void syncActive(){
wakestrap 0:632db6388a5d 96 //singleFlash = 1;
wakestrap 0:632db6388a5d 97 int j = 1;
wakestrap 0:632db6388a5d 98 for(int i = 0; i<8; i++)
wakestrap 0:632db6388a5d 99 {
wakestrap 0:632db6388a5d 100 if(flashStat[i])
wakestrap 0:632db6388a5d 101 {
wakestrap 0:632db6388a5d 102 switch(i){
wakestrap 0:632db6388a5d 103 case 0:
wakestrap 0:632db6388a5d 104 flash0 = j;
wakestrap 0:632db6388a5d 105 break;
wakestrap 0:632db6388a5d 106 case 1:
wakestrap 0:632db6388a5d 107 flash1 = j;
wakestrap 0:632db6388a5d 108 break;
wakestrap 0:632db6388a5d 109 case 2:
wakestrap 0:632db6388a5d 110 flash2 = j;
wakestrap 0:632db6388a5d 111 break;
wakestrap 0:632db6388a5d 112 case 3:
wakestrap 0:632db6388a5d 113 flash3 = j;
wakestrap 0:632db6388a5d 114 break;
wakestrap 0:632db6388a5d 115 case 4:
wakestrap 0:632db6388a5d 116 flash4 = j;
wakestrap 0:632db6388a5d 117 break;
wakestrap 0:632db6388a5d 118 case 5:
wakestrap 0:632db6388a5d 119 flash5 = j;
wakestrap 0:632db6388a5d 120 break;
wakestrap 0:632db6388a5d 121 case 6:
wakestrap 0:632db6388a5d 122 flash6 = j;
wakestrap 0:632db6388a5d 123 break;
wakestrap 0:632db6388a5d 124 case 7:
wakestrap 0:632db6388a5d 125 flash7 = j;
wakestrap 0:632db6388a5d 126 break;
wakestrap 0:632db6388a5d 127 }
wakestrap 0:632db6388a5d 128 }
wakestrap 0:632db6388a5d 129 if(i == 7)
wakestrap 0:632db6388a5d 130 {
wakestrap 0:632db6388a5d 131 wait(0.01);
wakestrap 0:632db6388a5d 132 flash0 = 0;
wakestrap 0:632db6388a5d 133 flash1 = 0;
wakestrap 0:632db6388a5d 134 flash2 = 0;
wakestrap 0:632db6388a5d 135 flash3 = 0;
wakestrap 0:632db6388a5d 136 flash4 = 0;
wakestrap 0:632db6388a5d 137 flash5 = 0;
wakestrap 0:632db6388a5d 138 flash6 = 0;
wakestrap 0:632db6388a5d 139 flash7 = 0;
wakestrap 0:632db6388a5d 140 }
wakestrap 0:632db6388a5d 141 }
wakestrap 0:632db6388a5d 142
wakestrap 0:632db6388a5d 143 }
wakestrap 0:632db6388a5d 144 void sendOK(){
wakestrap 0:632db6388a5d 145 lantronix.printf("\n\rOK\n\r");
wakestrap 0:632db6388a5d 146 }
wakestrap 0:632db6388a5d 147
wakestrap 0:632db6388a5d 148 void sendERROR(){
wakestrap 0:632db6388a5d 149 lantronix.printf("\n\rERROR\n\r");
wakestrap 0:632db6388a5d 150 }
wakestrap 0:632db6388a5d 151
wakestrap 0:632db6388a5d 152 void rxCallback() {
wakestrap 0:632db6388a5d 153 if(commandFlag)
wakestrap 0:632db6388a5d 154 {
wakestrap 0:632db6388a5d 155 if(debugOut) lantronix.printf("Command Started \r\n");
wakestrap 0:632db6388a5d 156 if(lantronix.readable())
wakestrap 0:632db6388a5d 157 {
wakestrap 0:632db6388a5d 158
wakestrap 0:632db6388a5d 159 msgBuffer[msgBufferCount] = lantronix.getc();
wakestrap 0:632db6388a5d 160 lantronix.putc(msgBuffer[msgBufferCount]);
wakestrap 0:632db6388a5d 161 if(msgBuffer[msgBufferCount] == '\n')
wakestrap 0:632db6388a5d 162 {
wakestrap 0:632db6388a5d 163 commandFlag = 0;
wakestrap 0:632db6388a5d 164 msgBuffer[msgBufferCount] = 0;
wakestrap 0:632db6388a5d 165 messageProcessFlag = 1;
wakestrap 0:632db6388a5d 166 msgBufferCount = 0;
wakestrap 0:632db6388a5d 167 }
wakestrap 0:632db6388a5d 168 if(msgBuffer[msgBufferCount] == 0x7F)
wakestrap 0:632db6388a5d 169 {
wakestrap 0:632db6388a5d 170 if(msgBufferCount > 0)
wakestrap 0:632db6388a5d 171 {
wakestrap 0:632db6388a5d 172 msgBufferCount--;
wakestrap 0:632db6388a5d 173 if(msgBufferCount > 0)
wakestrap 0:632db6388a5d 174 {
wakestrap 0:632db6388a5d 175 msgBufferCount--;
wakestrap 0:632db6388a5d 176 }
wakestrap 0:632db6388a5d 177 }
wakestrap 0:632db6388a5d 178 }
wakestrap 0:632db6388a5d 179 msgBufferCount++;
wakestrap 0:632db6388a5d 180 if(msgBufferCount > 9)
wakestrap 0:632db6388a5d 181 {
wakestrap 0:632db6388a5d 182 sendERROR();
wakestrap 0:632db6388a5d 183 msgBufferCount = 0;
wakestrap 0:632db6388a5d 184 messageProcessFlag = 0;
wakestrap 0:632db6388a5d 185 commandFlag = 0;
wakestrap 0:632db6388a5d 186 }
wakestrap 0:632db6388a5d 187 }
wakestrap 0:632db6388a5d 188 }
wakestrap 0:632db6388a5d 189
wakestrap 0:632db6388a5d 190 else
wakestrap 0:632db6388a5d 191 {
wakestrap 0:632db6388a5d 192 char c;
wakestrap 0:632db6388a5d 193 temploop = 0;
wakestrap 0:632db6388a5d 194 c = lantronix.getc();
wakestrap 0:632db6388a5d 195 if(c == 'A')
wakestrap 0:632db6388a5d 196 {
wakestrap 0:632db6388a5d 197 commandFlag = 1;
wakestrap 0:632db6388a5d 198 for(int i = 0; i<10; i++)
wakestrap 0:632db6388a5d 199 {
wakestrap 0:632db6388a5d 200 msgBuffer[i] = 0;
wakestrap 0:632db6388a5d 201 }
wakestrap 0:632db6388a5d 202 lantronix.putc(c);
wakestrap 0:632db6388a5d 203 msgBuffer[0] = c;
wakestrap 0:632db6388a5d 204 msgBufferCount = 1;
wakestrap 0:632db6388a5d 205 }
wakestrap 0:632db6388a5d 206
wakestrap 0:632db6388a5d 207
wakestrap 0:632db6388a5d 208 }
wakestrap 0:632db6388a5d 209 }
wakestrap 0:632db6388a5d 210
wakestrap 0:632db6388a5d 211
wakestrap 0:632db6388a5d 212
wakestrap 0:632db6388a5d 213
wakestrap 0:632db6388a5d 214 void setMode(char _flashmode){
wakestrap 0:632db6388a5d 215 if(_flashmode == '1') flashMode = 1;
wakestrap 0:632db6388a5d 216 if(_flashmode == '0') flashMode = 0;
wakestrap 0:632db6388a5d 217 }
wakestrap 0:632db6388a5d 218
wakestrap 0:632db6388a5d 219 void setLoad(char _channel, char _loadmode){
wakestrap 0:632db6388a5d 220 _channel = _channel - 48;
wakestrap 0:632db6388a5d 221 _loadmode = _loadmode - 48;
wakestrap 0:632db6388a5d 222
wakestrap 0:632db6388a5d 223 // lantronix.printf("Loadmode is %f \r\n", _loadmode)
wakestrap 0:632db6388a5d 224 // lantronix.printf("Channel is %f \r\n", _channel)
wakestrap 0:632db6388a5d 225
wakestrap 0:632db6388a5d 226 if(_channel == 0) load0 = _loadmode;
wakestrap 0:632db6388a5d 227 if(_channel == 1) load1 = _loadmode;
wakestrap 0:632db6388a5d 228 if(_channel == 2) SVLoad1 = _loadmode;
wakestrap 0:632db6388a5d 229 if(_channel == 3) SVLoad2 = _loadmode;
wakestrap 0:632db6388a5d 230 }
wakestrap 0:632db6388a5d 231
wakestrap 0:632db6388a5d 232 void setFlash(char _channel, char _dig1, char _dig2, char _dig3){
wakestrap 0:632db6388a5d 233 int number;
wakestrap 0:632db6388a5d 234 //lantronix.printf("AFR Char = %c.%c%c \r\n", _dig1, _dig2, _dig3);
wakestrap 0:632db6388a5d 235 flashrate = 0;
wakestrap 0:632db6388a5d 236 number = _dig1 - 48;
wakestrap 0:632db6388a5d 237 _channel = _channel - 48;
wakestrap 0:632db6388a5d 238 if(number == 1)
wakestrap 0:632db6388a5d 239 {
wakestrap 0:632db6388a5d 240 flashrate = 1;
wakestrap 0:632db6388a5d 241 flashStat[_channel+16] = flashrate;
wakestrap 0:632db6388a5d 242 }
wakestrap 0:632db6388a5d 243 else
wakestrap 0:632db6388a5d 244 {
wakestrap 0:632db6388a5d 245 number = _dig2 - 48;
wakestrap 0:632db6388a5d 246 flashrate = 0.1*number;
wakestrap 0:632db6388a5d 247 flashStat[_channel+16] = flashrate;
wakestrap 0:632db6388a5d 248 if(_dig3 != 13)
wakestrap 0:632db6388a5d 249 {
wakestrap 0:632db6388a5d 250 number = _dig3 - 48;
wakestrap 0:632db6388a5d 251 flashrate = flashrate + 0.01*number;
wakestrap 0:632db6388a5d 252 flashStat[_channel+16] = flashrate;
wakestrap 0:632db6388a5d 253 }
wakestrap 0:632db6388a5d 254 }
wakestrap 0:632db6388a5d 255
wakestrap 0:632db6388a5d 256 if(flashrate > 1)
wakestrap 0:632db6388a5d 257 {
wakestrap 0:632db6388a5d 258 flashrate = 1.0;
wakestrap 0:632db6388a5d 259 flashStat[_channel+16] = flashrate;
wakestrap 0:632db6388a5d 260 }
wakestrap 0:632db6388a5d 261 if(flashrate < 0)
wakestrap 0:632db6388a5d 262 {
wakestrap 0:632db6388a5d 263 flashrate = 0.0;
wakestrap 0:632db6388a5d 264 flashStat[_channel+16] = flashrate;
wakestrap 0:632db6388a5d 265 }
wakestrap 0:632db6388a5d 266 //lantronix.printf("AFR%i=%f", _channel, flashStat[_channel+8]);
wakestrap 0:632db6388a5d 267 }
wakestrap 0:632db6388a5d 268
wakestrap 0:632db6388a5d 269
wakestrap 0:632db6388a5d 270 void messageProcess() {
wakestrap 0:632db6388a5d 271 switch(msgBuffer[1])
wakestrap 0:632db6388a5d 272 {
wakestrap 0:632db6388a5d 273 case 'M' :
wakestrap 0:632db6388a5d 274 if(msgBuffer[2] == '=')
wakestrap 0:632db6388a5d 275 {
wakestrap 0:632db6388a5d 276 setMode(msgBuffer[3]);
wakestrap 0:632db6388a5d 277 sendOK();
wakestrap 0:632db6388a5d 278
wakestrap 0:632db6388a5d 279 }
wakestrap 0:632db6388a5d 280 else if(msgBuffer[2] == '?')
wakestrap 0:632db6388a5d 281 {
wakestrap 0:632db6388a5d 282 lantronix.printf("\n\rAM=%i\n\r", flashMode.read());
wakestrap 0:632db6388a5d 283 }
wakestrap 0:632db6388a5d 284 else sendERROR();
wakestrap 0:632db6388a5d 285 messageProcessFlag = 0;
wakestrap 0:632db6388a5d 286 msgBuffer[0] = 0;
wakestrap 0:632db6388a5d 287 msgBufferCount = 0;
wakestrap 0:632db6388a5d 288 break;
wakestrap 0:632db6388a5d 289 case 'L' :
wakestrap 0:632db6388a5d 290 if(msgBuffer[2] == '=')
wakestrap 0:632db6388a5d 291 {
wakestrap 0:632db6388a5d 292 setLoad(msgBuffer[3],msgBuffer[4]);
wakestrap 0:632db6388a5d 293 sendOK();
wakestrap 0:632db6388a5d 294 }
wakestrap 0:632db6388a5d 295 else if(msgBuffer[2] == '?')
wakestrap 0:632db6388a5d 296 {
wakestrap 0:632db6388a5d 297 lantronix.printf("\n\rAL=%i\n\r", load0.read());
wakestrap 0:632db6388a5d 298 }
wakestrap 0:632db6388a5d 299 else sendERROR();
wakestrap 0:632db6388a5d 300 messageProcessFlag = 0;
wakestrap 0:632db6388a5d 301 msgBuffer[0] = 0;
wakestrap 0:632db6388a5d 302 msgBufferCount = 0;
wakestrap 0:632db6388a5d 303
wakestrap 0:632db6388a5d 304 break;
wakestrap 0:632db6388a5d 305
wakestrap 0:632db6388a5d 306 case 'F' :
wakestrap 0:632db6388a5d 307 if(msgBuffer[3] == '=')
wakestrap 0:632db6388a5d 308 {
wakestrap 0:632db6388a5d 309 if(msgBuffer[5] == '.')
wakestrap 0:632db6388a5d 310 {
wakestrap 0:632db6388a5d 311 //lantronix.printf("\n\rD3=%i\n\r", msgBuffer[6]);
wakestrap 0:632db6388a5d 312 setFlash(msgBuffer[2],msgBuffer[4],msgBuffer[6],msgBuffer[7]);
wakestrap 0:632db6388a5d 313 sendOK();
wakestrap 0:632db6388a5d 314 }
wakestrap 0:632db6388a5d 315 else
wakestrap 0:632db6388a5d 316 {
wakestrap 0:632db6388a5d 317 sendERROR();
wakestrap 0:632db6388a5d 318 }
wakestrap 0:632db6388a5d 319 }
wakestrap 0:632db6388a5d 320 else if(msgBuffer[3] == '?')
wakestrap 0:632db6388a5d 321 {
wakestrap 0:632db6388a5d 322 lantronix.printf("\n\rAF=%i\n\r", flash0.read());
wakestrap 0:632db6388a5d 323 }
wakestrap 0:632db6388a5d 324 else sendERROR();
wakestrap 0:632db6388a5d 325 /**
wakestrap 0:632db6388a5d 326 if(msgBuffer[2] == 'R')
wakestrap 0:632db6388a5d 327 {
wakestrap 0:632db6388a5d 328 if(msgBuffer[3] == '=')
wakestrap 0:632db6388a5d 329 {
wakestrap 0:632db6388a5d 330 setFlash(msgBuffer[3]);
wakestrap 0:632db6388a5d 331 sendOK();
wakestrap 0:632db6388a5d 332 }
wakestrap 0:632db6388a5d 333 if(msgBuffer[3] == '?')
wakestrap 0:632db6388a5d 334 {
wakestrap 0:632db6388a5d 335 lantronix.printf("\n\rAFR=%i\n\r", flashRate);
wakestrap 0:632db6388a5d 336 }
wakestrap 0:632db6388a5d 337 }
wakestrap 0:632db6388a5d 338 **/
wakestrap 0:632db6388a5d 339 messageProcessFlag = 0;
wakestrap 0:632db6388a5d 340 msgBuffer[0] = 0;
wakestrap 0:632db6388a5d 341 msgBufferCount = 0;
wakestrap 0:632db6388a5d 342
wakestrap 0:632db6388a5d 343 break;
wakestrap 0:632db6388a5d 344 case 'T' :
wakestrap 0:632db6388a5d 345 if(msgBuffer[2] == 'S')
wakestrap 0:632db6388a5d 346 {
wakestrap 0:632db6388a5d 347 temploop = 1;
wakestrap 0:632db6388a5d 348 }
wakestrap 0:632db6388a5d 349
wakestrap 0:632db6388a5d 350 time_t seconds = time(NULL);
wakestrap 0:632db6388a5d 351 lantronix.printf("%3.1i,", seconds);
wakestrap 0:632db6388a5d 352
wakestrap 0:632db6388a5d 353 if(extTemp1.isPresent())
wakestrap 0:632db6388a5d 354 {
wakestrap 0:632db6388a5d 355 lantronix.printf("Temp1: %3.1f,\n\r", extTemp1.read());
wakestrap 0:632db6388a5d 356 extTemp1.startConversion();
wakestrap 0:632db6388a5d 357 }
wakestrap 0:632db6388a5d 358 if(extTemp2.isPresent())
wakestrap 0:632db6388a5d 359 {
wakestrap 0:632db6388a5d 360 lantronix.printf("Temp2: %3.1f,\n\r", extTemp2.read());
wakestrap 0:632db6388a5d 361 extTemp2.startConversion();
wakestrap 0:632db6388a5d 362 }
wakestrap 0:632db6388a5d 363 if(extTemp3.isPresent())
wakestrap 0:632db6388a5d 364 {
wakestrap 0:632db6388a5d 365 lantronix.printf("Temp3: %3.1f,\n\r", extTemp3.read());
wakestrap 0:632db6388a5d 366 extTemp2.startConversion();
wakestrap 0:632db6388a5d 367 }
wakestrap 0:632db6388a5d 368 if(extTemp4.isPresent())
wakestrap 0:632db6388a5d 369 {
wakestrap 0:632db6388a5d 370 lantronix.printf("Temp4: %3.1f,\n\r", extTemp4.read());
wakestrap 0:632db6388a5d 371 extTemp2.startConversion();
wakestrap 0:632db6388a5d 372 }
wakestrap 0:632db6388a5d 373 lantronix.printf("OB-Temp: %2.2f \n\r", BME280.getTemperature());
wakestrap 0:632db6388a5d 374 break;
wakestrap 0:632db6388a5d 375 case 'P' :
wakestrap 0:632db6388a5d 376 lantronix.printf("Pres: %4.2f kPa\n\r", BME280.getPressure());
wakestrap 0:632db6388a5d 377 break;
wakestrap 0:632db6388a5d 378 case 'H' :
wakestrap 0:632db6388a5d 379 lantronix.printf("Humi: %2.2f %% \n\r", BME280.getHumidity());
wakestrap 0:632db6388a5d 380 break;
wakestrap 0:632db6388a5d 381 case 'G' :
wakestrap 0:632db6388a5d 382 /**
wakestrap 0:632db6388a5d 383 gps.sample();
wakestrap 0:632db6388a5d 384 sendOK();
wakestrap 0:632db6388a5d 385 lantronix.printf("Lat = %.4f ", gps.latitude);
wakestrap 0:632db6388a5d 386 lantronix.printf("Lon = %.4f \n\r", gps.longitude);
wakestrap 0:632db6388a5d 387 **/
wakestrap 0:632db6388a5d 388 break;
wakestrap 0:632db6388a5d 389 case 'B' :
wakestrap 0:632db6388a5d 390 if(msgBuffer[2] == '=')
wakestrap 0:632db6388a5d 391 {
wakestrap 0:632db6388a5d 392 int dimValue = msgBuffer[3] - 48;
wakestrap 0:632db6388a5d 393 if(dimValue > 9) dimValue = 9;
wakestrap 0:632db6388a5d 394 if(dimValue < 0) dimValue = 0;
wakestrap 0:632db6388a5d 395
wakestrap 0:632db6388a5d 396 dimValue = 10 - dimValue;
wakestrap 0:632db6388a5d 397 dimValue = dimValue / 10;
wakestrap 0:632db6388a5d 398 if(dimValue = 0) dimValue = 0.01;
wakestrap 0:632db6388a5d 399 dimming.write(dimValue);
wakestrap 0:632db6388a5d 400 sendOK();
wakestrap 0:632db6388a5d 401
wakestrap 0:632db6388a5d 402 }
wakestrap 0:632db6388a5d 403 else if(msgBuffer[3] == '?')
wakestrap 0:632db6388a5d 404 {
wakestrap 0:632db6388a5d 405 lantronix.printf("\n\rAD=%i\n\r", dimming.read());
wakestrap 0:632db6388a5d 406 }
wakestrap 0:632db6388a5d 407 else sendERROR();
wakestrap 0:632db6388a5d 408 break;
wakestrap 0:632db6388a5d 409 case 'E' :
wakestrap 0:632db6388a5d 410 if(msgBuffer[3] == '=')
wakestrap 0:632db6388a5d 411 {
wakestrap 0:632db6388a5d 412 int channel = msgBuffer[2] - 48;
wakestrap 0:632db6388a5d 413 int enable = msgBuffer[4] - 48;
wakestrap 0:632db6388a5d 414 if(enable > 1) enable = 0;
wakestrap 0:632db6388a5d 415 if(enable < 0) enable = 0;
wakestrap 0:632db6388a5d 416 if(channel < 8)
wakestrap 0:632db6388a5d 417 {
wakestrap 0:632db6388a5d 418 flashStat[channel] = enable;
wakestrap 0:632db6388a5d 419 sendOK();
wakestrap 0:632db6388a5d 420 }
wakestrap 0:632db6388a5d 421 }
wakestrap 0:632db6388a5d 422 else if(msgBuffer[3] == '?')
wakestrap 0:632db6388a5d 423 {
wakestrap 0:632db6388a5d 424 int channel = msgBuffer[2] - 48;
wakestrap 0:632db6388a5d 425 lantronix.printf("\n\rAE%i=%i\n\r", channel, flashStat[channel]);
wakestrap 0:632db6388a5d 426 }
wakestrap 0:632db6388a5d 427 else sendERROR();
wakestrap 0:632db6388a5d 428 /**
wakestrap 0:632db6388a5d 429 if(msgBuffer[2] == 'R')
wakestrap 0:632db6388a5d 430 {
wakestrap 0:632db6388a5d 431 if(msgBuffer[3] == '=')
wakestrap 0:632db6388a5d 432 {
wakestrap 0:632db6388a5d 433 setFlash(msgBuffer[3]);
wakestrap 0:632db6388a5d 434 sendOK();
wakestrap 0:632db6388a5d 435 }
wakestrap 0:632db6388a5d 436 if(msgBuffer[3] == '?')
wakestrap 0:632db6388a5d 437 {
wakestrap 0:632db6388a5d 438 lantronix.printf("\n\rAFR=%i\n\r", flashRate);
wakestrap 0:632db6388a5d 439 }
wakestrap 0:632db6388a5d 440 }
wakestrap 0:632db6388a5d 441 **/
wakestrap 0:632db6388a5d 442
wakestrap 0:632db6388a5d 443 break;
wakestrap 0:632db6388a5d 444 default :
wakestrap 0:632db6388a5d 445 sendERROR();
wakestrap 0:632db6388a5d 446 messageProcessFlag = 0;
wakestrap 0:632db6388a5d 447 msgBuffer[0] = 0;
wakestrap 0:632db6388a5d 448 msgBufferCount = 0;
wakestrap 0:632db6388a5d 449 break;
wakestrap 0:632db6388a5d 450 }
wakestrap 0:632db6388a5d 451 messageProcessFlag = 0;
wakestrap 0:632db6388a5d 452 msgBuffer[0] = 0;
wakestrap 0:632db6388a5d 453 msgBufferCount = 0;
wakestrap 0:632db6388a5d 454 }
wakestrap 0:632db6388a5d 455
wakestrap 0:632db6388a5d 456
wakestrap 0:632db6388a5d 457
wakestrap 0:632db6388a5d 458 // main() runs in its own thread in the OS
wakestrap 0:632db6388a5d 459 int main() {
wakestrap 0:632db6388a5d 460 float lastTime = 0;
wakestrap 0:632db6388a5d 461 float interval = 0;
wakestrap 0:632db6388a5d 462
wakestrap 0:632db6388a5d 463 extTemp1Pin.mode(PullUp);
wakestrap 0:632db6388a5d 464 extTemp2Pin.mode(PullUp);
wakestrap 0:632db6388a5d 465 extTemp3Pin.mode(PullUp);
wakestrap 0:632db6388a5d 466 extTemp4Pin.mode(PullUp);
wakestrap 0:632db6388a5d 467
wakestrap 0:632db6388a5d 468 if(extTemp1.begin())
wakestrap 0:632db6388a5d 469 {
wakestrap 0:632db6388a5d 470 extTemp1.startConversion();
wakestrap 0:632db6388a5d 471 }
wakestrap 0:632db6388a5d 472 if(extTemp2.begin())
wakestrap 0:632db6388a5d 473 {
wakestrap 0:632db6388a5d 474 extTemp2.startConversion();
wakestrap 0:632db6388a5d 475 }
wakestrap 0:632db6388a5d 476 if(extTemp3.begin())
wakestrap 0:632db6388a5d 477 {
wakestrap 0:632db6388a5d 478 extTemp3.startConversion();
wakestrap 0:632db6388a5d 479 }
wakestrap 0:632db6388a5d 480 if(extTemp4.begin())
wakestrap 0:632db6388a5d 481 {
wakestrap 0:632db6388a5d 482 extTemp4.startConversion();
wakestrap 0:632db6388a5d 483 }
wakestrap 0:632db6388a5d 484 lantronix.baud(9600);
wakestrap 0:632db6388a5d 485 lantronix.attach(&rxCallback, Serial::RxIrq);
wakestrap 0:632db6388a5d 486 GPSEnable = 1;
wakestrap 0:632db6388a5d 487 flashMode = 0;
wakestrap 0:632db6388a5d 488 load0 = 0;
wakestrap 0:632db6388a5d 489 dimming.write(0.01);
wakestrap 0:632db6388a5d 490 dimming.period_us(100);
wakestrap 0:632db6388a5d 491 flash0 = flash1 = 0;
wakestrap 0:632db6388a5d 492 t.start();
wakestrap 0:632db6388a5d 493 wait(2);
wakestrap 0:632db6388a5d 494 lantronix.printf("Starting Up \n\r");
wakestrap 0:632db6388a5d 495 float currentTime = 0;
wakestrap 0:632db6388a5d 496 int delay = 1;
wakestrap 0:632db6388a5d 497 set_time(0);
wakestrap 0:632db6388a5d 498 while (true) {
wakestrap 0:632db6388a5d 499 syncLine.fall(&syncActive);
wakestrap 0:632db6388a5d 500 if(extTemp1.isPresent())
wakestrap 0:632db6388a5d 501 {
wakestrap 0:632db6388a5d 502 extTemp1.startConversion();
wakestrap 0:632db6388a5d 503 }
wakestrap 0:632db6388a5d 504 if(extTemp2.isPresent())
wakestrap 0:632db6388a5d 505 {
wakestrap 0:632db6388a5d 506 extTemp2.startConversion();
wakestrap 0:632db6388a5d 507 }
wakestrap 0:632db6388a5d 508 if(extTemp3.isPresent())
wakestrap 0:632db6388a5d 509 {
wakestrap 0:632db6388a5d 510 extTemp3.startConversion();
wakestrap 0:632db6388a5d 511 }
wakestrap 0:632db6388a5d 512 if(extTemp4.isPresent())
wakestrap 0:632db6388a5d 513 {
wakestrap 0:632db6388a5d 514 extTemp4.startConversion();
wakestrap 0:632db6388a5d 515 }
wakestrap 0:632db6388a5d 516 if(temploop)
wakestrap 0:632db6388a5d 517 {
wakestrap 0:632db6388a5d 518 if(extTemp1.read() > 110 || extTemp2.read() > 110)
wakestrap 0:632db6388a5d 519 {
wakestrap 0:632db6388a5d 520 for(int x=0; x <9; x++)
wakestrap 0:632db6388a5d 521 {
wakestrap 0:632db6388a5d 522 flashStat[x] = 0;
wakestrap 0:632db6388a5d 523 }
wakestrap 0:632db6388a5d 524 lantronix.printf("OVERTEMP REACHED END OF TEST \n\r");
wakestrap 0:632db6388a5d 525 wait(2);
wakestrap 0:632db6388a5d 526 }
wakestrap 0:632db6388a5d 527
wakestrap 0:632db6388a5d 528 time_t seconds = time(NULL);
wakestrap 0:632db6388a5d 529
wakestrap 0:632db6388a5d 530 if(seconds - lastTime >= delay)
wakestrap 0:632db6388a5d 531 {
wakestrap 0:632db6388a5d 532 lastTime = seconds;
wakestrap 0:632db6388a5d 533 lantronix.printf("%3.1i,", seconds);
wakestrap 0:632db6388a5d 534 if(extTemp1.isPresent())
wakestrap 0:632db6388a5d 535 {
wakestrap 0:632db6388a5d 536 lantronix.printf("%3.1f,", extTemp1.read());
wakestrap 0:632db6388a5d 537 }
wakestrap 0:632db6388a5d 538 if(extTemp2.isPresent())
wakestrap 0:632db6388a5d 539 {
wakestrap 0:632db6388a5d 540 lantronix.printf("%3.1f,", extTemp2.read());
wakestrap 0:632db6388a5d 541 }
wakestrap 0:632db6388a5d 542 if(extTemp3.isPresent())
wakestrap 0:632db6388a5d 543 {
wakestrap 0:632db6388a5d 544 lantronix.printf("%3.1f,", extTemp3.read());
wakestrap 0:632db6388a5d 545 }
wakestrap 0:632db6388a5d 546 if(extTemp4.isPresent())
wakestrap 0:632db6388a5d 547 {
wakestrap 0:632db6388a5d 548 lantronix.printf("%3.1f \n\r", extTemp4.read());
wakestrap 0:632db6388a5d 549 }
wakestrap 0:632db6388a5d 550 }
wakestrap 0:632db6388a5d 551 }
wakestrap 0:632db6388a5d 552 /**
wakestrap 0:632db6388a5d 553 if(singleFlash)
wakestrap 0:632db6388a5d 554 {
wakestrap 0:632db6388a5d 555 int j = 1;
wakestrap 0:632db6388a5d 556 for(int i = 0; i<8; i++)
wakestrap 0:632db6388a5d 557 {
wakestrap 0:632db6388a5d 558 if(flashStat[i])
wakestrap 0:632db6388a5d 559 {
wakestrap 0:632db6388a5d 560 switch(i){
wakestrap 0:632db6388a5d 561 case 0:
wakestrap 0:632db6388a5d 562 flash0 = j;
wakestrap 0:632db6388a5d 563 break;
wakestrap 0:632db6388a5d 564 case 1:
wakestrap 0:632db6388a5d 565 flash1 = j;
wakestrap 0:632db6388a5d 566 break;
wakestrap 0:632db6388a5d 567 case 2:
wakestrap 0:632db6388a5d 568 flash2 = j;
wakestrap 0:632db6388a5d 569 break;
wakestrap 0:632db6388a5d 570 case 3:
wakestrap 0:632db6388a5d 571 flash3 = j;
wakestrap 0:632db6388a5d 572 break;
wakestrap 0:632db6388a5d 573 case 4:
wakestrap 0:632db6388a5d 574 flash4 = j;
wakestrap 0:632db6388a5d 575 break;
wakestrap 0:632db6388a5d 576 case 5:
wakestrap 0:632db6388a5d 577 flash5 = j;
wakestrap 0:632db6388a5d 578 break;
wakestrap 0:632db6388a5d 579 case 6:
wakestrap 0:632db6388a5d 580 flash6 = j;
wakestrap 0:632db6388a5d 581 break;
wakestrap 0:632db6388a5d 582 case 7:
wakestrap 0:632db6388a5d 583 flash7 = j;
wakestrap 0:632db6388a5d 584 break;
wakestrap 0:632db6388a5d 585 }
wakestrap 0:632db6388a5d 586 }
wakestrap 0:632db6388a5d 587 if(i == 7)
wakestrap 0:632db6388a5d 588 {
wakestrap 0:632db6388a5d 589 wait(0.01);
wakestrap 0:632db6388a5d 590 flash0 = 0;
wakestrap 0:632db6388a5d 591 flash1 = 0;
wakestrap 0:632db6388a5d 592 flash2 = 0;
wakestrap 0:632db6388a5d 593 flash3 = 0;
wakestrap 0:632db6388a5d 594 flash4 = 0;
wakestrap 0:632db6388a5d 595 flash5 = 0;
wakestrap 0:632db6388a5d 596 flash6 = 0;
wakestrap 0:632db6388a5d 597 flash7 = 0;
wakestrap 0:632db6388a5d 598 singleFlash = 0;
wakestrap 0:632db6388a5d 599 }
wakestrap 0:632db6388a5d 600 }
wakestrap 0:632db6388a5d 601
wakestrap 0:632db6388a5d 602
wakestrap 0:632db6388a5d 603 }
wakestrap 0:632db6388a5d 604 **/
wakestrap 0:632db6388a5d 605
wakestrap 0:632db6388a5d 606 if(messageProcessFlag) messageProcess();
wakestrap 0:632db6388a5d 607 for(int i = 0; i<8; i++)
wakestrap 0:632db6388a5d 608 {
wakestrap 0:632db6388a5d 609 if(flashStat[i])
wakestrap 0:632db6388a5d 610 {
wakestrap 0:632db6388a5d 611 interval = (1/flashStat[i+16]) * 7;
wakestrap 0:632db6388a5d 612 //interval = 500;
wakestrap 0:632db6388a5d 613 if(flashStat[i+16] == 1)
wakestrap 0:632db6388a5d 614 {
wakestrap 0:632db6388a5d 615 switch(i){
wakestrap 0:632db6388a5d 616 case 0:
wakestrap 0:632db6388a5d 617 flash0 = 1;
wakestrap 0:632db6388a5d 618 break;
wakestrap 0:632db6388a5d 619 case 1:
wakestrap 0:632db6388a5d 620 flash1 = 1;
wakestrap 0:632db6388a5d 621 break;
wakestrap 0:632db6388a5d 622 case 2:
wakestrap 0:632db6388a5d 623 flash2 = 1;
wakestrap 0:632db6388a5d 624 break;
wakestrap 0:632db6388a5d 625 case 3:
wakestrap 0:632db6388a5d 626 flash3 = 1;
wakestrap 0:632db6388a5d 627 break;
wakestrap 0:632db6388a5d 628 case 4:
wakestrap 0:632db6388a5d 629 flash4 = 1;
wakestrap 0:632db6388a5d 630 break;
wakestrap 0:632db6388a5d 631 case 5:
wakestrap 0:632db6388a5d 632 flash5 = 1;
wakestrap 0:632db6388a5d 633 break;
wakestrap 0:632db6388a5d 634 case 6:
wakestrap 0:632db6388a5d 635 flash6 = 1;
wakestrap 0:632db6388a5d 636 break;
wakestrap 0:632db6388a5d 637 case 7:
wakestrap 0:632db6388a5d 638 flash7 = 1;
wakestrap 0:632db6388a5d 639 break;
wakestrap 0:632db6388a5d 640
wakestrap 0:632db6388a5d 641 }
wakestrap 0:632db6388a5d 642 }
wakestrap 0:632db6388a5d 643 else if(t.read_ms() - flashStat[i+8] > interval)
wakestrap 0:632db6388a5d 644 {
wakestrap 0:632db6388a5d 645 switch(i){
wakestrap 0:632db6388a5d 646 case 0:
wakestrap 0:632db6388a5d 647 flash0 = !flash0;
wakestrap 0:632db6388a5d 648 break;
wakestrap 0:632db6388a5d 649 case 1:
wakestrap 0:632db6388a5d 650 flash1 = !flash1;
wakestrap 0:632db6388a5d 651 break;
wakestrap 0:632db6388a5d 652 case 2:
wakestrap 0:632db6388a5d 653 flash2 = !flash2;
wakestrap 0:632db6388a5d 654 break;
wakestrap 0:632db6388a5d 655 case 3:
wakestrap 0:632db6388a5d 656 flash3 = !flash3;
wakestrap 0:632db6388a5d 657 break;
wakestrap 0:632db6388a5d 658 case 4:
wakestrap 0:632db6388a5d 659 flash4 = !flash4;
wakestrap 0:632db6388a5d 660 break;
wakestrap 0:632db6388a5d 661 case 5:
wakestrap 0:632db6388a5d 662 flash5 = !flash5;
wakestrap 0:632db6388a5d 663 break;
wakestrap 0:632db6388a5d 664 case 6:
wakestrap 0:632db6388a5d 665 flash6 = !flash6;
wakestrap 0:632db6388a5d 666 break;
wakestrap 0:632db6388a5d 667 case 7:
wakestrap 0:632db6388a5d 668 flash7 = !flash7;
wakestrap 0:632db6388a5d 669 break;
wakestrap 0:632db6388a5d 670 }
wakestrap 0:632db6388a5d 671 flashStat[i+8] = t.read_ms();
wakestrap 0:632db6388a5d 672 }
wakestrap 0:632db6388a5d 673 }
wakestrap 0:632db6388a5d 674 else
wakestrap 0:632db6388a5d 675 {
wakestrap 0:632db6388a5d 676 switch(i){
wakestrap 0:632db6388a5d 677 case 0:
wakestrap 0:632db6388a5d 678 flash0 = 0;
wakestrap 0:632db6388a5d 679 break;
wakestrap 0:632db6388a5d 680 case 1:
wakestrap 0:632db6388a5d 681 flash1 = 0;
wakestrap 0:632db6388a5d 682 break;
wakestrap 0:632db6388a5d 683 case 2:
wakestrap 0:632db6388a5d 684 flash2 = 0;
wakestrap 0:632db6388a5d 685 break;
wakestrap 0:632db6388a5d 686 case 3:
wakestrap 0:632db6388a5d 687 flash3 = 0;
wakestrap 0:632db6388a5d 688 break;
wakestrap 0:632db6388a5d 689 case 4:
wakestrap 0:632db6388a5d 690 flash4 = 0;
wakestrap 0:632db6388a5d 691 break;
wakestrap 0:632db6388a5d 692 case 5:
wakestrap 0:632db6388a5d 693 flash5 = 0;
wakestrap 0:632db6388a5d 694 break;
wakestrap 0:632db6388a5d 695 case 6:
wakestrap 0:632db6388a5d 696 flash6 = 0;
wakestrap 0:632db6388a5d 697 break;
wakestrap 0:632db6388a5d 698 case 7:
wakestrap 0:632db6388a5d 699 flash7 = 0;
wakestrap 0:632db6388a5d 700 break;
wakestrap 0:632db6388a5d 701 }
wakestrap 0:632db6388a5d 702 }
wakestrap 0:632db6388a5d 703 }
wakestrap 0:632db6388a5d 704
wakestrap 0:632db6388a5d 705 }
wakestrap 0:632db6388a5d 706 }
wakestrap 0:632db6388a5d 707