Go Down

Topic: Sensore IR e relè monostabile per comandare relè passo passo (Read 1 time) previous topic - next topic

orzowilde

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:

Code: [Select]
#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...... :smiley-roll:

Damidu

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

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

orzowilde

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

Ho fatto uno schizzo....

stefa24

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

orzowilde

Ciao Stefa24 e grazie per la risposta....

ma dove lo devo inserire result.value=0 dopo

Code: [Select]
{
     digitalWrite(RELE,HIGH);
     delay(1000);
     digitalWrite(RELE,LOW);

   
  }


e qual'è la sintassi giusta???

scusa ma sono alle prime armi...

orzowilde

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

Code: [Select]
#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

stefa24

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

stefano

Go Up