【发布时间】:2020-01-22 10:34:44
【问题描述】:
我最近为我的 Arduino Nano 购买了一个 GPS 模块。 GPS 没有接收到任何卫星。我检查了我的代码和接线,看不到任何可能影响它的东西。有时,当代码第一次运行时,它会发送一个混乱的 NMEA 代码,但会停止。我的代码如下。
#include <Arduino.h>
#include <Adafruit_BMP085.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <TinyGPS++.h>
#include "AltSoftSerial.h"
Adafruit_BMP085 bmp;
AltSoftSerial ss;
TinyGPSPlus gps;
float lat = 10;
float lon = 10;
void setup() {
Serial.begin(9600);
bmp.begin();
ss.begin(9600);
}
void loop() {
Serial.print("Pressure:");
Serial.print(bmp.readPressure());
Serial.println(" ");
Serial.print("Temp:");
Serial.print(bmp.readTemperature());
Serial.println("C* , ");
gps.encode(ss.read());
if (ss.available() > 0){
Serial.print("Latitude= ");
Serial.print(gps.location.lat());
Serial.print(" Longitude= ");
Serial.println(gps.location.lng());
Serial.print("GPS Height:");
Serial.println(gps.altitude.meters());
Serial.print("Number of Sattilites:");
Serial.println(gps.satellites.value());
Serial.print("Date:");
Serial.println(gps.date.day() + "/" + gps.date.month());
}
delay(3000);
}
这是串行监视器上显示的内容的片段
Pressure:100397
Temp:30.10C* ,
Latitude= 0.00 Longitude= 0.00
GPS Height:0.00
Number of Sattilites:0
Date:/
Pressure:100396
Temp:30.10C* ,
Latitude= 0.00 Longitude= 0.00
GPS Height:0.00
Number of Sattilites:0
Date:/
谢谢
【问题讨论】:
-
延迟(3000)可能会导致后台进程(例如管理 GPS)无法运行而导致问题。这只是一个猜测。请参阅 arduino.cc/en/tutorial/BlinkWithoutDelay 以了解如何避免代码中的长时间 delay() 调用。