SmartCharge
/
zz_Transmit
Transmitter Code
main.cpp@0:d4b08f5874fc, 2016-11-24 (annotated)
- Committer:
- jamesfryar
- Date:
- Thu Nov 24 15:36:06 2016 +0000
- Revision:
- 0:d4b08f5874fc
24112016
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jamesfryar | 0:d4b08f5874fc | 1 | #include "mbed.h" |
jamesfryar | 0:d4b08f5874fc | 2 | #include "SerialBase.h" |
jamesfryar | 0:d4b08f5874fc | 3 | #include "Watchdog.h" |
jamesfryar | 0:d4b08f5874fc | 4 | |
jamesfryar | 0:d4b08f5874fc | 5 | Serial pc(USBTX,USBRX); |
jamesfryar | 0:d4b08f5874fc | 6 | Serial rf(D1, NC, 4800); |
jamesfryar | 0:d4b08f5874fc | 7 | DigitalOut myled(LED1); |
jamesfryar | 0:d4b08f5874fc | 8 | AnalogIn ain(A0); |
jamesfryar | 0:d4b08f5874fc | 9 | Ticker led_rf_ticker; |
jamesfryar | 0:d4b08f5874fc | 10 | Ticker adc_ticker; |
jamesfryar | 0:d4b08f5874fc | 11 | Timer t; |
jamesfryar | 0:d4b08f5874fc | 12 | |
jamesfryar | 0:d4b08f5874fc | 13 | int adc_data[1024]; |
jamesfryar | 0:d4b08f5874fc | 14 | int adc_data_counter = 0; |
jamesfryar | 0:d4b08f5874fc | 15 | int current_threshold = 3000; |
jamesfryar | 0:d4b08f5874fc | 16 | int time_threshold = 30; |
jamesfryar | 0:d4b08f5874fc | 17 | bool data_ready = false; |
jamesfryar | 0:d4b08f5874fc | 18 | bool rf_32Asafe = false; |
jamesfryar | 0:d4b08f5874fc | 19 | |
jamesfryar | 0:d4b08f5874fc | 20 | Watchdog wd; |
jamesfryar | 0:d4b08f5874fc | 21 | |
jamesfryar | 0:d4b08f5874fc | 22 | void led_rf_blinky (void) |
jamesfryar | 0:d4b08f5874fc | 23 | { |
jamesfryar | 0:d4b08f5874fc | 24 | myled = !myled; |
jamesfryar | 0:d4b08f5874fc | 25 | if(rf_32Asafe == true) |
jamesfryar | 0:d4b08f5874fc | 26 | { |
jamesfryar | 0:d4b08f5874fc | 27 | rf.printf("HHHHHHHH"); |
jamesfryar | 0:d4b08f5874fc | 28 | pc.printf("Transmit: Charge at 32A\r\n"); |
jamesfryar | 0:d4b08f5874fc | 29 | |
jamesfryar | 0:d4b08f5874fc | 30 | } |
jamesfryar | 0:d4b08f5874fc | 31 | else |
jamesfryar | 0:d4b08f5874fc | 32 | { |
jamesfryar | 0:d4b08f5874fc | 33 | rf.printf("LLLLLLLL"); |
jamesfryar | 0:d4b08f5874fc | 34 | pc.printf("Transmit: Charge at 16A\r\n"); |
jamesfryar | 0:d4b08f5874fc | 35 | } |
jamesfryar | 0:d4b08f5874fc | 36 | } |
jamesfryar | 0:d4b08f5874fc | 37 | |
jamesfryar | 0:d4b08f5874fc | 38 | void read_adc (void) |
jamesfryar | 0:d4b08f5874fc | 39 | { |
jamesfryar | 0:d4b08f5874fc | 40 | if (adc_data_counter < 1024) |
jamesfryar | 0:d4b08f5874fc | 41 | { |
jamesfryar | 0:d4b08f5874fc | 42 | adc_data[adc_data_counter] = ain.read_u16(); |
jamesfryar | 0:d4b08f5874fc | 43 | adc_data_counter+=1; |
jamesfryar | 0:d4b08f5874fc | 44 | } |
jamesfryar | 0:d4b08f5874fc | 45 | else |
jamesfryar | 0:d4b08f5874fc | 46 | { |
jamesfryar | 0:d4b08f5874fc | 47 | data_ready = true; |
jamesfryar | 0:d4b08f5874fc | 48 | } |
jamesfryar | 0:d4b08f5874fc | 49 | } |
jamesfryar | 0:d4b08f5874fc | 50 | |
jamesfryar | 0:d4b08f5874fc | 51 | int main() |
jamesfryar | 0:d4b08f5874fc | 52 | { |
jamesfryar | 0:d4b08f5874fc | 53 | if (wd.WatchdogCausedReset()) pc.printf("Watchdog caused reset\r\n"); |
jamesfryar | 0:d4b08f5874fc | 54 | wd.Configure(5.0); |
jamesfryar | 0:d4b08f5874fc | 55 | float sum; |
jamesfryar | 0:d4b08f5874fc | 56 | int i; |
jamesfryar | 0:d4b08f5874fc | 57 | led_rf_ticker.attach(&led_rf_blinky, 0.2); |
jamesfryar | 0:d4b08f5874fc | 58 | adc_ticker.attach_us(&read_adc, 2000); |
jamesfryar | 0:d4b08f5874fc | 59 | t.reset(); |
jamesfryar | 0:d4b08f5874fc | 60 | |
jamesfryar | 0:d4b08f5874fc | 61 | while(1) |
jamesfryar | 0:d4b08f5874fc | 62 | { |
jamesfryar | 0:d4b08f5874fc | 63 | wd.Service(); |
jamesfryar | 0:d4b08f5874fc | 64 | if (data_ready == true) |
jamesfryar | 0:d4b08f5874fc | 65 | { |
jamesfryar | 0:d4b08f5874fc | 66 | sum = 0.0; |
jamesfryar | 0:d4b08f5874fc | 67 | for(i=0; i<1024; i++) |
jamesfryar | 0:d4b08f5874fc | 68 | { |
jamesfryar | 0:d4b08f5874fc | 69 | sum = sum + adc_data[i]; |
jamesfryar | 0:d4b08f5874fc | 70 | } |
jamesfryar | 0:d4b08f5874fc | 71 | sum = sum / 1024; |
jamesfryar | 0:d4b08f5874fc | 72 | |
jamesfryar | 0:d4b08f5874fc | 73 | if(sum < current_threshold && t.read()== 0) |
jamesfryar | 0:d4b08f5874fc | 74 | { |
jamesfryar | 0:d4b08f5874fc | 75 | t.reset(); |
jamesfryar | 0:d4b08f5874fc | 76 | t.start(); |
jamesfryar | 0:d4b08f5874fc | 77 | rf_32Asafe = false; |
jamesfryar | 0:d4b08f5874fc | 78 | } |
jamesfryar | 0:d4b08f5874fc | 79 | |
jamesfryar | 0:d4b08f5874fc | 80 | if(sum < current_threshold && t.read() > time_threshold) |
jamesfryar | 0:d4b08f5874fc | 81 | { |
jamesfryar | 0:d4b08f5874fc | 82 | t.stop(); |
jamesfryar | 0:d4b08f5874fc | 83 | rf_32Asafe = true; |
jamesfryar | 0:d4b08f5874fc | 84 | while(1){ |
jamesfryar | 0:d4b08f5874fc | 85 | } |
jamesfryar | 0:d4b08f5874fc | 86 | } |
jamesfryar | 0:d4b08f5874fc | 87 | |
jamesfryar | 0:d4b08f5874fc | 88 | if(sum > current_threshold) |
jamesfryar | 0:d4b08f5874fc | 89 | { |
jamesfryar | 0:d4b08f5874fc | 90 | t.reset(); |
jamesfryar | 0:d4b08f5874fc | 91 | rf_32Asafe = false; |
jamesfryar | 0:d4b08f5874fc | 92 | } |
jamesfryar | 0:d4b08f5874fc | 93 | |
jamesfryar | 0:d4b08f5874fc | 94 | data_ready = false; |
jamesfryar | 0:d4b08f5874fc | 95 | adc_data_counter = 0; |
jamesfryar | 0:d4b08f5874fc | 96 | } |
jamesfryar | 0:d4b08f5874fc | 97 | } |
jamesfryar | 0:d4b08f5874fc | 98 | } |