我正在尝试从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"));
}
}