SmartCharge
/
zz_Transmit
Transmitter Code
main.cpp
- Committer:
- jamesfryar
- Date:
- 2016-11-24
- Revision:
- 0:d4b08f5874fc
File content as of revision 0:d4b08f5874fc:
#include "mbed.h" #include "SerialBase.h" #include "Watchdog.h" Serial pc(USBTX,USBRX); Serial rf(D1, NC, 4800); DigitalOut myled(LED1); AnalogIn ain(A0); Ticker led_rf_ticker; Ticker adc_ticker; Timer t; int adc_data[1024]; int adc_data_counter = 0; int current_threshold = 3000; int time_threshold = 30; bool data_ready = false; bool rf_32Asafe = false; Watchdog wd; void led_rf_blinky (void) { myled = !myled; if(rf_32Asafe == true) { rf.printf("HHHHHHHH"); pc.printf("Transmit: Charge at 32A\r\n"); } else { rf.printf("LLLLLLLL"); pc.printf("Transmit: Charge at 16A\r\n"); } } void read_adc (void) { if (adc_data_counter < 1024) { adc_data[adc_data_counter] = ain.read_u16(); adc_data_counter+=1; } else { data_ready = true; } } int main() { if (wd.WatchdogCausedReset()) pc.printf("Watchdog caused reset\r\n"); wd.Configure(5.0); float sum; int i; led_rf_ticker.attach(&led_rf_blinky, 0.2); adc_ticker.attach_us(&read_adc, 2000); t.reset(); while(1) { wd.Service(); if (data_ready == true) { sum = 0.0; for(i=0; i<1024; i++) { sum = sum + adc_data[i]; } sum = sum / 1024; if(sum < current_threshold && t.read()== 0) { t.reset(); t.start(); rf_32Asafe = false; } if(sum < current_threshold && t.read() > time_threshold) { t.stop(); rf_32Asafe = true; while(1){ } } if(sum > current_threshold) { t.reset(); rf_32Asafe = false; } data_ready = false; adc_data_counter = 0; } } }