Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz

Arduino GPS的問題

查看數: 8435 | 評論數: 8 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發佈時間: 2012-11-28 17:28

正文摘要:

拜託各位大大有誰能幫我解決GPS, 書上寫要加BYTE可是我打出來的都是黑字別人跟其他論壇打的都是綠字,是我少了哪些東西呢? 加上書上的範例程式他缺少了副程式根本沒有頭緒,我快抓狂了@@ 還有我的GPS型號是   ...

回復

vegewell 發表於 2012-11-30 20:54:45
回復 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);
    }}}}
vegewell 發表於 2012-11-30 20:50:23
回復 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();
}
vegewell 發表於 2012-11-30 12:57:00
回復 5# q82839338


    你的圖片顯示使用
#include <SoftwareSerial.h>
我是說
試試
    #include <NewSoftSerial.h>
一個有 new的.h, for arduino 1.0
vegewell 發表於 2012-11-29 22:04:01
回復 3# q82839338

試試
    #include <NewSoftSerial.h>
自己去下載NewSoftSerial.h
參考成功範例
http://forum.processing.org/topic/arduino-gps-serial-data-to-processing-problem
vegewell 發表於 2012-11-29 10:37:30
回復 1# q82839338

照這網頁做:inside have code
http://bildr.org/2011/06/em406a-gps-arduino/

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-9-29 09:19 , Processed in 0.187923 second(s), 11 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表