Sensore IR e relè monostabile per comandare relè passo passo

Salve, sono nuovo del forum e volevo congratularmi con tutti voi per quello che fate…
Sono un neofita di Arduino e mi piace tantissimo perchè permette di fare un sacco di cose offrendo una vasta gamma di sensori e dispositivi…
Ho un piccolo problema con un progettino trovato in rete… un sensore IR collegato ad arduino UNO che mi permette, tramite un telecomando standard, di eccitare un relè monostabile da 6 volt (bobina) e 220v (contatti) per 1 secondo che a sua volta faccia avanzare di un passo il relè dell’illuminazione di casa, quindi 220v.

allego codice:

#include <IRremote.h> // use the library

int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
int RELE =7;

void setup()
{
  Serial.begin(9600); // for serial monitor output
  irrecv.enableIRIn(); // Start the receiver
  pinMode(RELE, OUTPUT); // Pin 9 output
}
void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
    irrecv.resume();// receive the next value
  }

  if ( results.value == 0xE13DDA28)//tasto 6 sul telecomando
  { 
     digitalWrite(RELE,HIGH);
     delay(1000);
     digitalWrite(RELE,LOW);

   
  }

}

il codice è molto semplice… il vero problema è che il relè scatta HIGH e dopo un secondo si sente un altro tic ma non torna a LOW…ci torna dopo aver premuto un altra volta il bottone del telecomando…

pensavo si trattasse di un difetto del relè ma ne ho provato un altro e niente da fare… poi ho provato lo sketch BLINK e il relè funziona perfettamente…

spero possiate aiutarmi e ringrazio anticipatamente… :roll_eyes:

Mi dispiace non poterti aiutare in quanto anch'io sono in cerca di risposte.

Forse puoi aiutarmi tu :grin: , potresti darmi lo schema di collegamento che hai utilizzato e i vari componenti?

@Damidu
Certo… il forum serve a questo, no??

Ho fatto uno schizzo…

ir e relè_bb.pdf (849 KB)

ciao
il problema potrebbe essere che results.value= memorizza e mantiene il valore memorizzato, quindi quando ricomincia il loop la condizione di if e sempre vera, quindi devi svuotare la variabile, prova a scrivere results.value=0 alla fine del loop

stefano

Ciao Stefa24 e grazie per la risposta....

ma dove lo devo inserire result.value=0 dopo

 { 
     digitalWrite(RELE,HIGH);
     delay(1000);
     digitalWrite(RELE,LOW);

   
  }

e qual'è la sintassi giusta???

scusa ma sono alle prime armi...

FANTASTICOOOO!!!
Grazie a Stefa24 ho risolto…
vi posto se vi interessa il codice con la correzione…

#include <IRremote.h> // use the library

int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
int RELE =7;

void setup()
{
  Serial.begin(9600); // for serial monitor output
  irrecv.enableIRIn(); // Start the receiver
  pinMode(RELE, OUTPUT); // Pin 9 output
}
void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
    irrecv.resume();// receive the next value
  }

  if ( results.value == 0xE13DDA28)//tasto 6 sul telecomando
  { 
     digitalWrite(RELE,HIGH);
     delay(1000);
     digitalWrite(RELE,LOW);
results.value=0;
   
  }

}

GRAZIE

ciao
perfetto
l'istruzione và messa dentro le parentesi dell'if o anche tra le parentesi del loop

stefano