“아빠 어디야”앱 아두이노 소스 판올림. Ver.180911

  • 충격이 수준이상이면 스팸으로 처리될 정도로 끊임없이 메시지보내는 부분 수정
  • 0.1초 간격으로 재 측정하도록 하면서
  • 감도를 50으로 나누어 영역화
  • 기존 값을 저장해서 기존 영역과 다를 경우에 앱으로 보내도록 수정함.
#include <SoftwareSerial.h>
#include <TinyGPS.h>

TinyGPS gps;
SoftwareSerial GPSSerial(4, 3);
SoftwareSerial BTSerial(0,1);

void GetGPSdata(TinyGPS &gps);
float latitude, longitude;
int year;
byte month, day, hour, minute, second, hundredths;

int PORT_SHOCK_ANALOG = A0;
int NowShockAnalogValue = 0;
int PreShockAnalogValue = 0;

void setup(){
pinMode(PORT_SHOCK_ANALOG, INPUT);

BTSerial.begin(9600);
Serial.begin(9600);
GPSSerial.begin(9600);

Serial.println(“GPS 위치 수신중..”);
Serial.println(“충격감지센서 조정중..”);
Serial.println(“”);
}

void loop(){
while(GPSSerial.available()) {
int data = GPSSerial.read();
if(gps.encode(data)){
gps.f_get_position(&latitude, &longitude);
gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths);
delay(100);
}

NowShockAnalogValue = 1024 - analogRead(PORT_SHOCK_ANALOG);
if(NowShockAnalogValue >= 100 and (int(NowShockAnalogValue/50) != int(PreShockAnlaogValue/50))){
//if(latitude > 0) {
Serial.println(NowShockAnalogValue);//Serial.print(“충격감도: “);
Serial.println(latitude,5);//Serial.print(“위도: “);
Serial.println(longitude,5);//Serial.print(“경도: “);

//Serial.print(“현재시각: “);
//Serial.print(hour, DEC); Serial.print(“:”);
//Serial.print(minute, DEC); Serial.print(“:”);
//Serial.print(second, DEC); Serial.print(“.”);
//Serial.println(hundredths, DEC);

BTSerial.println(NowShockAnlaogValue);
BTSerial.println(latitude);
BTSerial.println(longitude);

PreShockAnalogValue = NowShockAnlaogValue;
delay(100);
//}

}
delay(100);
}
}

Leave a Reply

Your email address will not be published. Required fields are marked *