为什么GPS无法在Arduino中读取数据

时间:2018-12-11 11:23:35

标签: arduino gps

我正在尝试从Arduino-uno的串行监视器上读取GPS数据。我正在使用TinyGPS ++库读取GPS数据,并且使用的GPS模块为“ em506”。如果超出条件(if((a>0)&&(b>0)),我将能够读取GPS数据(不连续),如果处于无法读取的条件之内。

#include<Wire.h>
#include <dht.h>
#include <TinyGPS++.h>
#include<SoftwareSerial.h>
SoftwareSerial ss(4,3);
//for dht11
dht DHT;
TinyGPSPlus gps;

const int MPU=0x68;
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;

void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);
  Serial.begin(9600);
  ss.begin(4800);
}

void loop(){
  float a,b;
  a= DHT.temperature;
  b= DHT.humidity;
  DHT.read22(7);
  //readGPS2();
  Serial.print("Temperature: ");Serial.println(a);
  Serial.print("Humidity: ");Serial.println(b);
  if((a>0) && (b>0)) {
     readGyro();
     Serial.println(a);
     Serial.println("#");
     Serial.println(b);
     readGPS();
  }
}

void readGPS()
{
  while (ss.available() > 0)
  if (gps.encode(ss.read()))
    displayInfo();
    Serial.println("$");
  if (millis() > 7000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected: check wiring."));
    while(true);
  }
 }

 void readGyro()
 {
   Wire.beginTransmission(MPU);
   Wire.write(0x3B);
   Wire.endTransmission(false);
   Wire.requestFrom(MPU,12,true);
   GyX= Wire.read()<<8|Wire.read();
   GyY= Wire.read()<<8|Wire.read();
   GyZ= Wire.read()<<8|Wire.read();
   delay(333);
   Serial.println(GyX);
   Serial.println("#");
   Serial.println(GyY);
   Serial.println("#");
   Serial.println(GyZ);
   Serial.println("#");
 }
 void displayInfo()
 {
   Serial.println("#");
   if (gps.location.isValid())
   {
     Serial.println(gps.location.lat(), 6);
     Serial.println("#");
     Serial.println(gps.location.lng(), 6);
     Serial.println("#");
     Serial.println(gps.date.value());
     Serial.println("#");
     Serial.println(gps.time.value());
     Serial.println("#");
     Serial.println(gps.speed.kmph());
    }
    else
    {
      Serial.println(F("INVALID"));
    }
  }

0 个答案:

没有答案