回復 7# q82839338 另外一個的程式 我也可以compiling成功 你試看看 RXPIN 是19 #include "TinyGPS.h" TinyGPS gps; unsigned long fix_age, time, date, speed; void getgps(TinyGPS &gps); void setup() { Serial.begin(4800); Serial1.begin(4800); } void loop(){ byte month, day, hour, minute, second, decsec; int year; { if (Serial1.available() > 0){ char c = Serial1.read(); if (gps.encode(c)) { gps.get_datetime(&date, &time); gps.crack_datetime(&year, &month, &day, &hour, &minute, &second); Serial.print("Date: "); Serial.print(static_cast<int>(month)); Serial.print("/"); Serial.print(static_cast<int>(day)); Serial.print("/"); Serial.print(year); Serial.print(" Time: "); Serial.print(static_cast<int>(hour)); Serial.print(":"); Serial.print(static_cast<int>(minute)); Serial.print(":"); Serial.print(static_cast<int>(second)); float falt = gps.f_altitude(); // +/- altitude in meters float velocidade = gps.f_speed_kmph(); Serial.print(" Altitude: "); Serial.println(falt); Serial.print("Velocidade: "); Serial.println(velocidade); delay(1000); }}}} |
回復 7# q82839338 NewSoftSerial.h是不需要的 你改成 Serial.begin(4800); 另外要接 3.3V Logic Level Converter https://www.sparkfun.com/products/8745? 以下的程式 #define RXPIN 19 #define TXPIN 18 我可以compiling成功 #include <TinyGPS.h> #include <SoftwareSerial.h> // Define which pins you will use on the Arduino to communicate with your // GPS. In this case, the GPS module's TX pin will connect to the // Arduino's RXPIN which is pin 3. #define RXPIN 19 #define TXPIN 18 //Set this value equal to the baud rate of your GPS #define GPSBAUD 4800 // Create an instance of the TinyGPS object TinyGPS gps; // Initialize the NewSoftSerial library to the pins you defined above SoftwareSerial uart_gps(RXPIN, TXPIN); // This is where you declare prototypes for the functions that will be // using the TinyGPS library. void getgps(TinyGPS &gps); // In the setup function, you need to initialize two serial ports; the // standard hardware serial port (Serial()) to communicate with your // terminal program an another serial port (NewSoftSerial()) for your // GPS. void setup() { // This is the serial rate for your terminal program. It must be this // fast because we need to print everything before a new sentence // comes in. If you slow it down, the messages might not be valid and // you will likely get checksum errors. Serial.begin(4800); //Sets baud rate of your GPS uart_gps.begin(GPSBAUD); Serial.println(""); Serial.println("GPS Shield QuickStart Example Sketch v12"); Serial.println(" ...waiting for lock... "); Serial.println(""); } // This is the main loop of the code. All it does is check for data on // the RX pin of the ardiuno, makes sure the data is valid NMEA sentences, // then jumps to the getgps() function. void loop() { while(uart_gps.available()) // While there is data on the RX pin... { int c = uart_gps.read(); // load the data into a variable... if(gps.encode(c)) // if there is a new valid sentence... { getgps(gps); // then grab the data. } } } // The getgps function will get and print the values we want. void getgps(TinyGPS &gps) { // To get all of the data into varialbes that you can use in your code, // all you need to do is define variables and query the object for the // data. To see the complete list of functions see keywords.txt file in // the TinyGPS and NewSoftSerial libs. // Define the variables that will be used float latitude, longitude; // Then call this function gps.f_get_position(&latitude, &longitude); // You can now print variables latitude and longitude Serial.print("Lat/Long: "); Serial.print(latitude,5); Serial.print(", "); Serial.println(longitude,5); // Same goes for date and time int year; byte month, day, hour, minute, second, hundredths; gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths); // Print data and time Serial.print("Date: "); Serial.print(month, DEC); Serial.print("/"); Serial.print(day, DEC); Serial.print("/"); Serial.print(year); Serial.print(" Time: "); Serial.print(hour, DEC); Serial.print(":"); Serial.print(minute, DEC); Serial.print(":"); Serial.print(second, DEC); Serial.print("."); Serial.println(hundredths, DEC); //Since month, day, hour, minute, second, and hundr // Here you can print the altitude and course values directly since // there is only one value for the function Serial.print("Altitude (meters): "); Serial.println(gps.f_altitude()); // Same goes for course Serial.print("Course (degrees): "); Serial.println(gps.f_course()); // And same goes for speed Serial.print("Speed(kmph): "); Serial.println(gps.f_speed_kmph()); Serial.println(); // Here you can print statistics on the sentences. unsigned long chars; unsigned short sentences, failed_checksum; gps.stats(&chars, &sentences, &failed_checksum); //Serial.print("Failed Checksums: ");Serial.print(failed_checksum); //Serial.println(); Serial.println(); } |
回復 3# q82839338 試試 #include <NewSoftSerial.h> 自己去下載NewSoftSerial.h 參考成功範例 http://forum.processing.org/topic/arduino-gps-serial-data-to-processing-problem |
回復 1# q82839338 照這網頁做:inside have code http://bildr.org/2011/06/em406a-gps-arduino/ |
小黑屋|手機版|Archiver|機器人論壇 from 2005.07
GMT+8, 2025-1-31 21:05 , Processed in 0.216843 second(s), 11 queries , Apc On.
Powered by Discuz! X3.2
© 2001-2013 Comsenz Inc.