کد
#include <SoftwareSerial.h>
SoftwareSerial gpsSerial(10, 11); // RX, TX (TX not used)
const int sentenceSize = 80;
int state;
long times=0;
long timer=0;
long timel=0;
long timen=0;
char sentence[sentenceSize];
void setup()
{
Serial.begin(9600);
pinMode(2,INPUT);
gpsSerial.begin(9600);
}
void loop()
{
static int i = 0;
if (gpsSerial.available())
{
state=digitalRead(2);
char ch = gpsSerial.read();
if (ch != '\n' && i < sentenceSize)
{
sentence[i] = ch;
i++;
}
else
{
sentence[i] = '\0';
timen=millis();
timel=timer - timen;
i = 0;
if(state == HIGH)
{
state=0;
displayGPSemerg();
}
if(state==LOW && timel <= 0){
times = millis();
timer = times+4000;
displayGPS();
}
}
}
}
void displayGPS()
{
char field[20];
getField(field, 0);
if (strcmp(field, "$GPRMC") == 0)
{
// Set up the SMS
Serial.println("AT");
delay(20);
Serial.println("AT+CMGF=1");
delay(20);
Serial.println("AT+CMGS=\"09356256637\""); //CHANGE TO DESTINATION NUMBER
delay(20);
// Send the GPS data
Serial.print("Lat: ");
getField(field, 3); // number
Serial.print(field);
getField(field, 4); // N/S
Serial.print(field);
Serial.print(" Long: ");
getField(field, 5); // number
Serial.print(field);
getField(field, 6); // E/W
Serial.println(field);
// End the SMS
Serial.write(26);
delay(500);
}
}
void displayGPSemerg()
{
char field[20];
getField(field, 0);
if (strcmp(field, "$GPRMC") == 0)
{
// Set up the SMS
Serial.println("AT");
delay(20);
Serial.println("AT+CMGF=1");
delay(20);
Serial.println("AT+CMGS=\"09356256637\""); //CHANGE TO DESTINATION NUMBER
delay(20);
// Send the GPS data
Serial.print("Lat: ");
getField(field, 3); // number
Serial.print(field);
getField(field, 4); // N/S
Serial.print(field);
Serial.print(" Long: ");
getField(field, 5); // number
Serial.print(field);
getField(field, 6); // E/W
Serial.println(field);
Serial.print(" Im not very well !!!! ");
// End the SMS
Serial.write(26);
delay(500);
}
}
void getField(char* buffer, int index)
{
int sentencePos = 0;
int fieldPos = 0;
int commaCount = 0;
while (sentencePos < sentenceSize)
{
if (sentence[sentencePos] == ',')
{
commaCount ++;
sentencePos ++;
}
if (commaCount == index)
{
buffer[fieldPos] = sentence[sentencePos];
fieldPos ++;
}
sentencePos ++;
}
buffer[fieldPos] = '\0';
}
سلام تو این کد من میخوام هر ۲۵ دقیقه موقیعت جغرافیایی رو به موبایل ارسال کنه و همچنین اگه کلید روشن شد دوباره اون اطلاعات رو بفرسته به همراه یک جمله حالا من می خوام اگه کلید ۲ دقیقه خاموش شد اون مختصات با جمله ارسال بشه ( اگه حتی یک دقیقه و سی ثانیه هم خاموش بود اون مختصات ارسال نشه و برنامه به کار خود ادامه بده تا ۲۵ دقیقه طول بکشه تا اطلاعات رو بفرسته و اگه تا قبل از این ۲۵ دقیقه کلید ۲ دقیقه خاموش شد اون مختصات رو با جمله بفرسته و وقتی ۲۵ دقبقه کامل شد مختصات رو بفرسته بدون هیچ جمله ای و برنامه بعد به کار خود ادامه بده ....... بدون هیچ توقفی )
ممنون میشم کمک کنید فقد سریع چون عجله دارم .....