invio sms con modulo gsm A6 mini

Salve a tutti,
mi sono appena iscritto e mi presento: sono Giuseppe ho 39 anni e ho sempre lavorato nell'automazione industriale assemblando e cablando impianti e quadri elettrici, ma da quando ho avuto un'incidente qualche mese fa, ho iniziato a giocare un pò con arduino anche perché ho sempre avuto la passione per l'elettronica e programmazione, ma sopratutto perché ora non sono in condizione di lavorare...

Ma veniamo al quesito:
avrei intenzione di essere avvisato via sms nel caso di 2 eventi opposti quindi ho collegato il contatto di un relè all'input 2 ed ho creato uno sketch con if ed else.

Il problema ora è che ricevo ripetuti sms in loop dell'uno e, in caso di scambio stato, dell'altro evento.

Come dare ad arduino il tempo necessario per compilare un solo messaggio di uno e dell'altro stato del relè?

Spero di essere stato chiaro.

Grazie in anticipo a chi mi aiuterà!
Giuseppe

Prima di tutto, nella sezione in lingua Inglese si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione ...

... poi, essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Il tuo post è stato spostato nell'opportuna sezione del forum "Italiano"

Scusate, ora mi sono presentato adeguatamente.
Buona giornata a tutti!

Per il tuo problema prova ad usare delle variabili come "flag" ...
... una volta che hai fatto una certa cosa, alzi la flag e le volte successive, se è già alzata, NON ripeti la cosa.

Ovviamente nel codice ci devono essere sia le condizioni che alzano la flag che quelle che la resettano ... altrimenti la cosa la fai, in assoluto, una sola volta.

Guglielmo

Scusate, ho fatto alcuni tentativi ma non cambia nulla… Potrei allegare lo sketch per cercare di capire dove sbaglio?

… si, certo, magari metti un piccolo esempio che mostra il problema.

Ah … mi raccomando, in conformità al regolamento, punto 7, il codice va racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone </> … primo a sinistra.

Guglielmo

Dunque, io vorrei che funzionasse in questo modo:alimentando il sistema mi invia il messaggio 1 poi all'evento il pin 2 cambia di stato (da low a high) e ricevo il messaggio 2 e così via.

Ho provato inserendo in maniera diversa delle variabili flag come consigliato ma il risultato non cambia..

Sareste così gentili da farmi capire dove ho sbagliato?

Grazie!

char phone_no[]="370";
#define sensor 2 // sensore
int button_1;
void setup() 
{
}

void loop()
{
int flag1=0;
int flag2=0;
pinMode(sensor, INPUT_PULLUP); 
Serial.begin(9600);
button_1 = digitalRead (sensor);
if (button_1 == LOW)

{

Serial.begin(9600);
delay(300); 

Serial.println("AT+CMGF=1");    
delay(2000);
Serial.print("AT+CMGS=\"");
Serial.print(phone_no); 
Serial.write(0x22);
Serial.write(0x0D);      
Serial.write(0x0A);  
delay(2000);
Serial.print("Messaggio 1!");
flag1 = 1;
delay(500);
Serial.println (char(26));
delay(7000);
}
else 
{
flag2 = 1;
Serial.println("AT+CMGF=1"); 
delay(2000);
Serial.print("AT+CMGS=\"");
Serial.print(phone_no); 
Serial.write(0x22);
Serial.write(0x0D);    
Serial.write(0x0A);  
delay(2000);
Serial.print("Messaggio2!");
flag2 = 0;
delay(500);
Serial.println (char(26));
delay (7000);
}
}

... allora, guarda, in tutta onestà e senza alcuna offesa ... a te mancano proprio le BASI di come si programma su Arduino (e di come si programma, in generale, in 'C') ! Quello che hai scritto, onestamente ... NON ha molto senso ! :confused:

Per cui, inutile stare qui a girarci intorno ... devi cominciare con studiare QUESTO proseguire con QUESTO e/o acquistare qualche buon libro (es. QUESTO) ... dovrebbero chiarti molto le idee.

Poi ... fai una diagramma ESATTO di quello che vuoi che il tuo programma faccia, punto per punto, senza saltare nulla ... frasi del tipo " il sistema mi invia il messaggio 1 poi all'evento il pin 2 cambia di stato (da low a high) e ricevo il messaggio 2 e così via." ... non descrivono NULLA. La descrizione DEVE essere puntuale, precisa e coprire TUTTE le condizioni.

A quel punto, dopo aver studiato MOLTO bene quanto ti ho indicato, prova a riscrivere il programma e a metterlo di nuovo qui ... e vediamo di sistemarlo. ::slight_smile:

Guglielmo

ok, grazie.