diff --git a/GPSSpeedMultiCore.ino b/GPSSpeedMultiCore.ino index e166dab..59aa90a 100644 --- a/GPSSpeedMultiCore.ino +++ b/GPSSpeedMultiCore.ino @@ -23,31 +23,36 @@ std::atomic_int gpsFixType(0); //screen Adafruit_AlphaNum4 disp = Adafruit_AlphaNum4(); unsigned long timeOfLastFix = 0UL; +unsigned long timer = millis(); +bool setInitBrightness = false; +unsigned long brightnessTimer = millis(); //button volatile bool buttonPushed = false; volatile int ScreenBrightnessUser = 15; volatile int screenBrightnessCurrent = ScreenBrightnessUser; volatile unsigned long lastButtonPush = 0UL; +volatile bool manualBrightness = false; void chageBrightness() { if (millis() - lastButtonPush > DEBOUNCE_DELAY) { buttonPushed = true; lastButtonPush = millis(); + manualBrightness=true; } } void connectGPS() { //need to do this everytime the GPS turns back on do { //set gps to 115200 baudrate code comes from sparkfun examples - // Serial.println("GNSS: trying 115200 baud"); + Serial.println("GNSS: trying 115200 baud"); Serial1.begin(115200); if (myGPS.begin(Serial1) == true) break; delay(100); - //Serial.println("GNSS: trying 9600 baud"); + Serial.println("GNSS: trying 9600 baud"); Serial1.begin(9600); if (myGPS.begin(Serial1) == true) { - // Serial.println("GNSS: connected at 9600 baud, switching to 115200"); + Serial.println("GNSS: connected at 9600 baud, switching to 115200"); myGPS.setSerialRate(115200); delay(100); } else { @@ -57,23 +62,36 @@ void connectGPS() { //need to do this everytime the GPS turns back on myGPS.setAutoPVT(true); myGPS.setUART1Output(COM_TYPE_UBX); //Set the UART1 port to output UBX only (turn off NMEA noise) myGPS.setNavigationFrequency(GPS_UPDATE_FREQUENCY); //set frequency of updates to 10/sec - myGPS.setDynamicModel(DYN_MODEL_AUTOMOTIVE); //set dynamic model of GPS to automotive to more accutate results + //myGPS.setDynamicModel(DYN_MODEL_AUTOMOTIVE); //set dynamic model of GPS to automotive to more accutate results } bool setStartBrightness() { - while (!(myGPS.getFixType() > 0)) {} //wait here untill gps gets a fix - double az, el; - setTime(myGPS.getHour(),myGPS.getMinute(),myGPS.getSecond(),myGPS.getDay(),myGPS.getMonth(),myGPS.getYear()); - time_t timeUtc=now(); - calcHorizontalCoordinates(timeUtc,(double) myGPS.getLatitude()*10000000,(double) myGPS.getLongitude() * 10000000,az,el); + double az = 0; + double el = 0; + int hour = myGPS.getHour(); + int min = myGPS.getMinute(); + int sec = myGPS.getSecond(); + int day = myGPS.getDay(); + int month = myGPS.getMonth(); + int year = myGPS.getYear(); + setTime(hour, min, sec, day, month, year); + time_t timeUtc = now(); + double lat = myGPS.getLatitude(); + lat = lat / 10000000; + double lng = myGPS.getLongitude(); + lng = lng / 10000000; + calcHorizontalCoordinates(timeUtc, lat, lng, az, el); - if(el>SUNRISESET_STD_ALTITUDE){ - screenBrightnessCurrent=15; - } else if ((elCIVIL_DAWNDUSK_STD_ALTITUDE)){ - screenBrightnessCurrent=MIDDLE_SCREEN_BRIGHTNESS; - } else if (el SUNRISESET_STD_ALTITUDE) { + screenBrightnessCurrent = 15; + } else if ((el < SUNRISESET_STD_ALTITUDE) && (el > CIVIL_DAWNDUSK_STD_ALTITUDE)) { + screenBrightnessCurrent = MIDDLE_SCREEN_BRIGHTNESS; + } else if (el < CIVIL_DAWNDUSK_STD_ALTITUDE) { + screenBrightnessCurrent = 0; } + ScreenBrightnessUser = screenBrightnessCurrent; disp.setBrightness(screenBrightnessCurrent); return true; } @@ -101,6 +119,14 @@ void setup1() { } void loop() { + //set init brightness + +if((!setInitBrightness&&gpsFixType.load()>0)||((!manualBrightness&&millis() > brightnessTimer + 6000)&&gpsFixType.load()>0)){ //fire every minute + setStartBrightness(); + setInitBrightness = true; + brightnessTimer= millis(); +} + //change brightness if (buttonPushed == true) { if (ScreenBrightnessUser == 15) { @@ -161,6 +187,7 @@ void loop() { rp2040.wdt_reset(); //rest watchdog timer } + void loop1() { //myGPS.getPVT(GPS_WAIT_TIME); speed.store(myGPS.getGroundSpeed() * 0.0036); //get speed in mm/s and convert to Km/h