diff --git a/hoverbrettctrl/src/main.cpp b/hoverbrettctrl/src/main.cpp index a439835..cecf789 100644 --- a/hoverbrettctrl/src/main.cpp +++ b/hoverbrettctrl/src/main.cpp @@ -4,6 +4,10 @@ unsigned long loopmillis; unsigned long last_loopmillis; + +#include //for teensy rtc +time_t getTeensy3Time(); + #include #include @@ -196,20 +200,44 @@ void display_show_stats(); void display_show_stats2(); void display_show_stats3(); void display_show_menu(); +time_t getTeensy3Time(); void setup() { Serial.begin(SERIAL_BAUD); //Debug and Program + Wire.begin(); + // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally + if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { + Serial.println(F("SSD1306 allocation failed")); + for(;;); // Don't proceed, loop forever + } + + // Show initial display buffer contents on the screen -- + // the library initializes this with an Adafruit splash screen. + display.display(); + + display.clearDisplay(); + display.setTextSize(1); + display.setTextColor(SSD1306_WHITE); + display.setCursor(0, 0); + display.println(F("Init. ESC")); + display.display(); // Show initial text + esc.init(); + display.print(F("Init. SD.. ")); display.display(); + Serial.print("Initializing SD card..."); // see if the card is present and can be initialized: if (!SD.begin(SDCHIPSELECT)) { Serial.println("Card failed, or not present"); + display.print(F("Fail!")); display.display(); datalogging=false; //disable logging + delay(1000); }else{ Serial.println("Card initialized."); + display.print(F("OK")); display.display(); } analogReadResolution(12); @@ -233,29 +261,28 @@ void setup() { }); - Wire.begin(); - // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally - if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { - Serial.println(F("SSD1306 allocation failed")); - for(;;); // Don't proceed, loop forever + + display.print(F("Init. RTC.. ")); display.display(); + + setSyncProvider(getTeensy3Time); //See https://www.pjrc.com/teensy/td_libs_Time.html#teensy3 + if (timeStatus()!= timeSet) { + Serial.println("Unable to sync with the RTC"); + display.println(F("Fail")); display.display(); + delay(1000); + } else { + Serial.println("RTC has set the system time"); + display.println(F("OK")); display.display(); } - // Show initial display buffer contents on the screen -- - // the library initializes this with an Adafruit splash screen. - display.display(); - - display.clearDisplay(); - display.setTextSize(1); - display.setTextColor(SSD1306_WHITE); - display.setCursor(10, 0); - display.println(F("Radio Init")); - display.display(); // Show initial text - + + display.println(F("Init. NRF24")); display.display(); radio.begin(); Serial.println("RF24 set rate"); - radio.setDataRate( RF24_250KBPS ); //set to slow data rate. default was 1MBPS + if (!radio.setDataRate( RF24_250KBPS )){ //set to slow data rate. default was 1MBPS + display.println(F(" Fail Data Rate!")); display.display(); + } //radio.setDataRate( RF24_1MBPS ); //Serial.println("set channel"); @@ -272,12 +299,11 @@ void setup() { Serial.println("start listening"); radio.startListening(); - display.clearDisplay(); - display.setTextSize(2); // Draw 2X-scale text - display.setTextColor(SSD1306_WHITE); - display.setCursor(10, 0); - display.println(F("Started")); + + + display.println(F("Finished")); display.display(); // Show initial text + } @@ -753,6 +779,8 @@ void display_show_stats() { display.print(F("trip=")); display.print(esc.getTrip(),0); display.print(F(", ")); display.print(esc.getCurrentConsumed(),3); display.println(F("Ah")); display.print(F("eff.=")); display.print(esc.getTrip()/esc.getCurrentConsumed(),0); display.println(F("m/Ah")); + display.print(F("RTC=")); display.print(now()); display.println(F("")); + display.print(F("Logging=")); display.print(datalogging); display.println(F("")); display.display(); // Show initial text @@ -837,4 +865,10 @@ void display_show_menu() { } display.display(); // Show initial text +} + + +time_t getTeensy3Time() +{ + return Teensy3Clock.get(); } \ No newline at end of file