mirror of
				https://github.com/KevinMidboe/Arduino.git
				synced 2025-10-29 17:40:11 +00:00 
			
		
		
		
	Init commit with many years of arduino sketches and projects. I dont know if the esp8266 includes much, but there are also libraries. I hope they dont have crazy automatic versioning through the Arduino IDE.
This commit is contained in:
		
							
								
								
									
										150
									
								
								libraries/TinyGPSPlus-1.0.2/examples/SatElevTracker/SatElevTracker.ino
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										150
									
								
								libraries/TinyGPSPlus-1.0.2/examples/SatElevTracker/SatElevTracker.ino
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,150 @@ | ||||
| #include <TinyGPS++.h> | ||||
| #include <SoftwareSerial.h> | ||||
| /* | ||||
|    This sample code tracks satellite elevations using TinyGPSCustom objects. | ||||
|  | ||||
|    Satellite numbers and elevations are not normally tracked by TinyGPS++, but  | ||||
|    by using TinyGPSCustom we get around this. | ||||
|  | ||||
|    It requires the use of SoftwareSerial and assumes that you have a | ||||
|    4800-baud serial GPS device hooked up on pins 4(RX) and 3(TX). | ||||
| */ | ||||
| static const int RXPin = 4, TXPin = 3; | ||||
| static const uint32_t GPSBaud = 4800; | ||||
| static const int MAX_SATELLITES = 40; | ||||
| static const int PAGE_LENGTH = 40; | ||||
|  | ||||
| // The TinyGPS++ object | ||||
| TinyGPSPlus gps; | ||||
|  | ||||
| // The serial connection to the GPS device | ||||
| SoftwareSerial ss(RXPin, TXPin); | ||||
|  | ||||
| TinyGPSCustom totalGPGSVMessages(gps, "GPGSV", 1); // $GPGSV sentence, first element | ||||
| TinyGPSCustom messageNumber(gps, "GPGSV", 2);      // $GPGSV sentence, second element | ||||
| TinyGPSCustom satNumber[4]; // to be initialized later | ||||
| TinyGPSCustom elevation[4]; | ||||
| bool anyChanges = false; | ||||
| unsigned long linecount = 0; | ||||
|  | ||||
| struct | ||||
| { | ||||
|   int elevation; | ||||
|   bool active; | ||||
| } sats[MAX_SATELLITES]; | ||||
|  | ||||
| void setup() | ||||
| { | ||||
|   Serial.begin(115200); | ||||
|   ss.begin(GPSBaud); | ||||
|  | ||||
|   Serial.println(F("SatElevTracker.ino")); | ||||
|   Serial.println(F("Displays GPS satellite elevations as they change")); | ||||
|   Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion()); | ||||
|   Serial.println(F("by Mikal Hart")); | ||||
|   Serial.println(); | ||||
|    | ||||
|   // Initialize all the uninitialized TinyGPSCustom objects | ||||
|   for (int i=0; i<4; ++i) | ||||
|   { | ||||
|     satNumber[i].begin(gps, "GPGSV", 4 + 4 * i); // offsets 4, 8, 12, 16 | ||||
|     elevation[i].begin(gps, "GPGSV", 5 + 4 * i); // offsets 5, 9, 13, 17 | ||||
|   } | ||||
| } | ||||
|  | ||||
| void loop() | ||||
| { | ||||
|   // Dispatch incoming characters | ||||
|   if (ss.available() > 0) | ||||
|   { | ||||
|     gps.encode(ss.read()); | ||||
|     | ||||
|     if (totalGPGSVMessages.isUpdated()) | ||||
|     { | ||||
|       for (int i=0; i<4; ++i) | ||||
|       { | ||||
|         int no = atoi(satNumber[i].value()); | ||||
|         if (no >= 1 && no <= MAX_SATELLITES) | ||||
|         { | ||||
|           int elev = atoi(elevation[i].value()); | ||||
|           sats[no-1].active = true; | ||||
|           if (sats[no-1].elevation != elev) | ||||
|           { | ||||
|             sats[no-1].elevation = elev; | ||||
|             anyChanges = true; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|        | ||||
|       int totalMessages = atoi(totalGPGSVMessages.value()); | ||||
|       int currentMessage = atoi(messageNumber.value()); | ||||
|       if (totalMessages == currentMessage && anyChanges) | ||||
|       { | ||||
|         if (linecount++ % PAGE_LENGTH == 0) | ||||
|           printHeader(); | ||||
|         TimePrint(); | ||||
|         for (int i=0; i<MAX_SATELLITES; ++i) | ||||
|         { | ||||
|           Serial.print(F(" ")); | ||||
|           if (sats[i].active) | ||||
|             IntPrint(sats[i].elevation, 2); | ||||
|           else | ||||
|             Serial.print(F("   ")); | ||||
|           sats[i].active = false; | ||||
|         } | ||||
|         Serial.println(); | ||||
|         anyChanges = false; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| void IntPrint(int n, int len) | ||||
| { | ||||
|   int digs = n < 0 ? 2 : 1; | ||||
|   for (int i=10; i<=abs(n); i*=10) | ||||
|     ++digs; | ||||
|   while (digs++ < len) | ||||
|     Serial.print(F(" ")); | ||||
|   Serial.print(n); | ||||
|   Serial.print(F(" ")); | ||||
| } | ||||
|  | ||||
| void TimePrint() | ||||
| { | ||||
|   if (gps.time.isValid()) | ||||
|   { | ||||
|     if (gps.time.hour() < 10) | ||||
|       Serial.print(F("0")); | ||||
|     Serial.print(gps.time.hour()); | ||||
|     Serial.print(F(":")); | ||||
|     if (gps.time.minute() < 10) | ||||
|       Serial.print(F("0")); | ||||
|     Serial.print(gps.time.minute()); | ||||
|     Serial.print(F(":")); | ||||
|     if (gps.time.second() < 10) | ||||
|       Serial.print(F("0")); | ||||
|     Serial.print(gps.time.second()); | ||||
|     Serial.print(F(" ")); | ||||
|   } | ||||
|   else | ||||
|   { | ||||
|     Serial.print(F("(unknown)")); | ||||
|   } | ||||
| } | ||||
|  | ||||
| void printHeader() | ||||
| { | ||||
|   Serial.println(); | ||||
|   Serial.print(F("Time     ")); | ||||
|   for (int i=0; i<MAX_SATELLITES; ++i) | ||||
|   { | ||||
|     Serial.print(F(" ")); | ||||
|     IntPrint(i+1, 2); | ||||
|   } | ||||
|   Serial.println(); | ||||
|   Serial.print(F("---------")); | ||||
|   for (int i=0; i<MAX_SATELLITES; ++i) | ||||
|     Serial.print(F("----")); | ||||
|   Serial.println(); | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user