Sketch antifurto facile! :)

Salve ragazzi, Vorrei fare un semplice antifurto con due led infrarossi (Emettitore e ricevitore). Il funzionamento è semplice, appena qualcosa passa fra i due led, un led ed eventualmente un buzzer si accendono e restano fermi su quel stato, per disattivare tutto, si usa un pulsante. Il seguente sketch funziona, ma lo stato d'allarme dura solo l'istante in cui passo fra i due led. Come dovrei modificarlo?

const int tx = 2;
const int buzzer= 3;
const int rx = 1;
const int ledrosso = 4;

void setup()
{
  pinMode (tx,OUTPUT);
  pinMode (rx,INPUT);
  pinMode (buzzer,OUTPUT);
  pinMode (ledrosso,OUTPUT);
  digitalWrite(tx,HIGH);
}


void loop()
{
  noTone(buzzer);
  digitalWrite(ledrosso,LOW);
  
  while (analogRead(rx) >500)
  {
    tone(buzzer,10);
    digitalWrite(ledrosso,HIGH);
    
  }
  
  
}

Non serve che il codice lo metti rosso, va messo negli appositi tag simbolo "#"(dovresti sapere ormai che non si riesce a leggerlo correttamente)

qui c'è qualcosa di simile fatto ieri Gestire una condizione di allarme - #4 by pablos71 - Generale - Arduino Forum ... mettetevi d'accordo :smiley:

Il suo mi sembra molto complesso. A me bastano le funzioni elementari: memorizzare lo stato appena passo fra i due led e successivamente tornare alla situazione iniziale tramite un pulsante. La base da cui partire è quel codice. :slight_smile:

Innanzitutto immagino che per LED RX tu ti riferisca ad un fotodiodo o fototransistor IR.
A parte questo, devi creare una variabile di stato (Allarme) che venga modificata non appena l'analogRead restituisce tale condizione.
Nel loop, nel caso Allarme sia true, viene ignorata la lettura successiva e viene letto lo stato del pulsante che, se premuto, riporta Allarme a false..

cyberhs:
Innanzitutto immagino che per LED RX tu ti riferisca ad un fotodiodo o fototransistor IR.
A parte questo, devi creare una variabile di stato (Allarme) che venga modificata non appena l'analogRead restituisce tale condizione.
Nel loop, nel caso Allarme sia true, viene ignorata la lettura successiva e viene letto lo stato del pulsante che, se premuto, riporta Allarme a false..

Detto in parole piú povere:
Predi una variabile. La metti a 1 quando rilevi un passagio tra i LED. La metti a 0 quando viene premuto il pulsante reset.
Quando questa variablie é 1 fai saonare l'alarme e accendi il LED Alarme.

Ciao Uwe