Allarme con lampeggio led e suono sirena

Salve a tutti
Ho creato un allarme con una scheda simm900 vorrei che quando scatta l'allarme mi suoni una sirena e accenda un led ma ad intermittenza non di continuo
Mi potete aiutare
Allego lo sketch
Grazie

#include <SoftwareSerial.h>

SoftwareSerial SIM900(7, 8);// RX, TX

//const int buttonPin = 6;  // Pin a cui è collegato l'interruttore
int t=0;
int LED = 13;
int val = 0;
//int BUTTON = 13;
int BUTTON = 6;

void setup(){
  SIM900.begin(9600);
  Serial.begin(9600);
  pinMode(LED,OUTPUT);
  pinMode (BUTTON,INPUT);
 }

void loop() {
val=digitalRead(BUTTON);
if (val==HIGH){
  //Serial.println("Allarme ON INTERR Aperto");
 digitalWrite(LED,HIGH);
 
 makeCall();
 
  Serial.println("Allarme ON INTERR Aperto");
  
  delay(2000);
  //return;
  }
  else{
}
    digitalWrite(LED,LOW);
   Serial.println("Allarme OFF INTERR Chiuso");
      delay(2000);
}
void makeCall() {
  Serial.println("void makeCall");
  SIM900.print("ATD+xxxxxxxxxx;\r");  // Numero di telefono destinatario
  delay(1000);
  
  Serial.println("A test message! ,Da arduino");
  SIM900.print("ATD = \"+xxxxxxxxxxxx;\t");
  ("da vivi");  // Numero di telefono destinatario
  delay(1000);
  Serial.println("AT + CMGS = \"+xxxxxxxxxxxx\"Da arduino");
 t=millis();

  delay(1000);
  
  if (t> 10000){
   Serial.println("AT + CSCLK=1");
  BUTTON == LOW; 
}
}

Si prega di utilizzare la lingua inglese nelle sezioni inglesi del forum. Argomento spostato nella sezione italiana del forum.

Prima di tutto ti ricordo che ti era già stato detto, in passato, di prestare attenzione alla sezione in cui metti i tuoi post. Condidera che il reiterarsi dello stesso errore può portare al BAN dal forum :confused:. Dopo di che ...

... fosse anche per una sola riga, come richiesto al punto 7 del REGOLAMENTO, il codice va racchiuso tra i tag CODE, per cui, cortesemente edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona <code/> nella barra degli strumenti per contrassegnarla come codice. Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE).

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà sistemato il codice come indicato, nel rispetto del regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farlo al più presto. :wink:

Salve
Chiedo scusa per i miei errori ma non sapevo come usare il CODE :face_with_raised_eyebrow:

... mmm ... ma hai anche formattato male il codice. Come ho scritto:

Guglielmo

1 Like

Per la formattazione del codice, usare CTRL+T è utile per trovare le parentesi graffe chiuse male.
Ad esempio nel tuo loop() DI SICURO hai messo la parte di codice da eseguire quando val è low NON nel else perchè hai chiuso male le graffe.
Io ti consiglio di mettere le graffe sempre su riga da sola NON su righe con altre cose, esempio:

void loop() 
{
  val=digitalRead(BUTTON);
  if (val==HIGH)
  { 
    //Serial.println("Allarme ON INTERR Aperto");
    digitalWrite(LED,HIGH);
    makeCall();
    Serial.println("Allarme ON INTERR Aperto");
    delay(2000);
  }
  else
  {
    digitalWrite(LED,LOW);
    Serial.println("Allarme OFF INTERR Chiuso");
    delay(2000);
  }
}

Occupi più spazio, ma incolonnando le graffe è più facile vedere corrispondenza aperte/chiuse. Inoltre IDE quando ti posizioni su graffa, ti evidenzia la corrispondente.
Nel pezzo di codice ti ho corretto l'errore delle graffe chiuse male. Confrontalo col tuo.

Ma ci sono altri errori. Esempio non ha senso quel BUTTON == LOW; ne il pezzo ("da vivi");
E poi c'e' errore di logica sull'uso del millis(). (e millis() ritorna unsigned long non un int)

1 Like

Grazie per i consigli.
Appena mi libero proverò a modificare i miei errori