센서들에서 값을 읽으면 gps신호를 받아서 출력해주는 기능을 만드는중인데 gps를 단독으로 쓰면 잘나오다가 센서들이랑 같이 쓰면 나올때도 있고 안나올때도 있는데 문제가 무엇일까요?
주로 처음엔 안나오다가 수십번이상 반복하면 출력되는것 같습니다.
#include <Adafruit_MLX90614.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <TinyGPS.h>
SoftwareSerial GPS(2,3);
long lat,lon;
char Lat[20],Lon[20];
String calLat,calLon;
int starter=0;
int tempBody=0;
TinyGPS gps;
int tempWater=0;
Adafruit_MLX90614 mlx1=Adafruit_MLX90614();
Adafruit_MLX90614 mlx2=Adafruit_MLX90614();
void setup() {
mlx1.begin();
mlx2.begin();
Serial.begin(9600);
GPS.begin(9600);
pinMode(A0,INPUT);
pinMode(9,INPUT);
}
void loop() {
starter=analogRead(A0);
if(starter>50){
Serial.println(starter);
if(digitalRead(9)==LOW){
tempWater=mlx1.readAmbientTempC();
if(tempWater<=35){
GPS.listen();
while(GPS.available()){
if(gps.encode(GPS.read())){
gps.get_position(&lat,&lon);
dtostrf(lat,9,4,Lat);
dtostrf(lon,9,4,Lon);
Lat[4]=Lat[3];
Lat[3]=Lat[2];
Lat[2]='.';
calLat=String(Lat);
calLat.remove(7);
Lon[5]=Lon[4];
Lon[4]=Lon[3];
Lon[3]='.';
calLon=String(Lon);
calLon.remove(8);
// Serial.println(calLat);
// Serial.println(calLon);
}
}//gps end
tempBody=mlx2.readAmbientTempC();
Serial.println(calLat);
Serial.println(calLon);
Serial.println(tempWater);
Serial.println(tempBody);
Serial.println("Gold Time:10h");
delay(1000);
}else{
delay(1000);
}
}else{
delay(1000);
}
}
}
|