- 충격이 수준이상이면 스팸으로 처리될 정도로 끊임없이 메시지보내는 부분 수정
- 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); } }