Olá pessoal.
estou com um problema na programação das minhas necessidades e gostava de alguma ajuda se possível.
o que se passa: estou a montar um "sistema" por SMS em que o arduino comunica uma informação e gostaria que ele parasse até receber um SMS meu para continuar e que o meu número fosse o único autorizado. Isto porque quando ele obtêm a informação de uma fonte, continua a enviar SMS até a mesma fonte voltar ao estado "normal". Tenho um tempo defenido para o envio do SMS através do Arduino, mas passado esse tempo, ele reenvia o SMS.
A solução a meu ver, passa ou por um SMS a mandar parar ou alguma coisa na programação que diga ao Arduino para não voltar a ler aquele contacto até ele mudar de estado.
Vou deixar aqui embaixo o código que compilei até agora.
Obrigado!
#define ledVerm 13
#include <SimpleTimer.h>
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
int valor = 12;
char incoming_char=0;
int salir = 0;
void setup()
{
pinMode(valor, INPUT);
pinMode(ledVerm, OUTPUT);
digitalWrite(valor, LOW);
SIM900.begin(19200);
delay(20000);
Serial.begin(19200);
Serial.println("Arranque Arduino e Modulo GSM com sucesso.");
// MENSAGEM DE INÍCIO DE PROGRAMA CORRECTO
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT+CMGS="+351*********""); internacional
delay(100);
SIM900.println("HELLO WORLD. Boot com sucesso de Arduino e GSM900.");
delay(100);
SIM900.println((char)26); // End AT command with a ^Z, ASCII code 26
delay(100);
SIM900.println();
delay(5000);
Serial.println("SMS enviada com sucesso.");
delay(100);
SIM900.println("AT+CMGS="+351*********"");
delay(100);
SIM900.println("*******************************"); // Mensagem a enviar
delay(100);
SIM900.println((char)26); // End AT command with a ^Z, ASCII code 26
delay(100);
SIM900.println();
//delay(5000);
Serial.println("SMS enviada com sucesso.");
}
void loop()
//FUNÇÃO PARA MANDAR SMS DE NÍVEL BAIXO
{
delay(100);
valor = digitalRead(12);
if (valor != LOW)
{
Serial.println("Nivel alto!");
digitalWrite(ledVerm, HIGH);
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT+CMGS="+351*********"");
delay(100);
SIM900.println("******************************"); // message to send
delay(100);
SIM900.println((char)26);
delay(5000);
SIM900.println();
Serial.println("SMS URGENCIA ENVIADA.");
delay(100);
Serial.println("A aguardar reposicao de nivel");
digitalWrite(ledVerm, HIGH);
//while (valor != LOW)
//{delay(500);
}
{
delay(100);
valor = digitalRead(12);
if (valor != HIGH)
digitalWrite(ledVerm, LOW);
Serial.println("Nivel normal");
delay(10000);
}}
// FIM DE PROGRAMA