Problema accensione luci

Ciao Ragazzi =) Sto realizzando un progetto che consiste nell'accendere le luci quando un sensore HC-SR=04 rileva un ostacolo e che le spegne nel momento in cui lo rivede.

Lo sketch che allego una volta caricato si comporta in questo modo:

  • il sensore vede l'ostacolo e accende le luci
  • nel momento in cui l'ostacolo non c'è più le spegne

Io NON voglio che funzioni così.

Voglio che si comporti nel modo seguente:

  • il sensore vede l'ostacolo e accende le luci
  • le luci rimangono accese anche se l'ostacolo non c'è (voglio il rele_1 rimanga a livello logico alto)
  • le luci si spengono quando il sensore rivede l'ostacolo

Come dovrei aggiornare il codice?

Grazie in anticipo :slight_smile:

SKETCH:

int trig_pin = 12;
int echo_pin = 11;
int rele_1 = 10;

void setup() {
 // put your setup code here, to run once:

 pinMode (trig_pin, OUTPUT);
 pinMode (echo_pin, INPUT);
 pinMode (rele_1, OUTPUT); 
 }

void loop() {
 // put your main code here, to run repeatedly:

 digitalWrite (trig_pin, LOW);
 digitalWrite (trig_pin, HIGH);
 delayMicroseconds (20);
 digitalWrite (trig_pin, LOW);

 long duration = pulseIn (echo_pin, HIGH);

 long cm = 0.034 * duration / 2;

 if (cm > 50) digitalWrite (rele_1, HIGH);
 else digitalWrite (rele_1, LOW);  
  }

Ciao Uwe

Devi usare un flag... se vedi l'ostacolo accendi la luce, quindi il flag si imposta a 1, se l'ostacolo sparisce il flag rimane a 1 e quindi la luce rimane accesa e se torna l'ostacolo il flag si imposta a 0, quindi luce spenta.
Praticamente il flag deve variare ogni volta che il sensore rileva una distanza diversa da quella impostata come limite.
Ok? :slight_smile: