IRremote ricezione segnale

Salve a tutti, sto cercando di captare il codice infrarossi di un qualsiasi telecomando. Ho collegato il ricevitore (sembra bene e sembra funzionare visto che si accende il ledino rosso e aumenta di intensità quando premo un tasto del telecomando), il problema è che aprendo il monitor, non rileva nessun segnale, ed ho provato diversi sketch. Come questo:

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

Quale potrebbe essere il problema??

Come lo hai collegato ? Cosa hai collegato (modello IR) ?
Quale Arduino ? Uno, Mega.. raga... senza info... ma come dobbiamo dirlo ?

nid69ita:
Come lo hai collegato ? Cosa hai collegato (modello IR) ?
Quale Arduino ? Uno, Mega… raga… senza info… ma come dobbiamo dirlo ?

Hai ragione, chiedo scusa a tutta la community.

Ho un ardunino uno con un ricevitore Keyes con 3 piedini collegato rispettivamente meno,piu,pin.

Dopo vari tentativi sono riuscito a ricevere dei dati con questo codice:

/** Modified by Chris Targett* Now includes more protocols* Novemeber 2011
 
* IRremote: IRrecvDump – dump details of IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*
* Modified by Chris Targett to speed up the process of collecting
* IR (HEX and DEC) codes from a remote (to put into and .h file)
*
*/
 
#include <IRremote.h>
 
int RECV_PIN = 11;
 
IRrecv irrecv(RECV_PIN);
 
decode_results results;
 
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
 
// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
// void * to work around compiler issue
//void dump(void *v) {
//  decode_results *results = (decode_results *)v
void dump(decode_results *results) {
int count = results->rawlen;
if (results->decode_type == UNKNOWN) {
Serial.print("Unknown encoding: ");
}
else if (results->decode_type == NEC) {
Serial.print("Decoded NEC: ");
}
else if (results->decode_type == SONY) {
Serial.print("Decoded SONY: ");
}
else if (results->decode_type == RC5) {
Serial.print("Decoded RC5: ");
}
else if (results->decode_type == RC6) {
Serial.print("Decoded RC6: ");
}
else if (results->decode_type == SAMSUNG) {
Serial.print("Decoded SAMSUNG: ");
}
else if (results->decode_type == JVC) {
Serial.print("Decoded JVC: ");
}
else if (results->decode_type == PANASONIC) {
Serial.print("Decoded Panasonic: ");
}
Serial.print(results->value, HEX);
Serial.print("(");
Serial.print(results->bits, DEC);
Serial.println(" bits)");
Serial.print("#define Something_DEC ");
Serial.println(results->value, DEC);
Serial.print("#define Something_HEX ");
Serial.println(results->value, HEX);
Serial.print("Raw (");
Serial.print(count, DEC);
Serial.print("): ");
for (int i = 0; i < count; i++) {
if ((i % 2) == 1) {
Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
}
else {
Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
}
Serial.print(" ");
}
Serial.println("");
}
 
void loop() {
if (irrecv.decode(&results)) {
dump(&results);
irrecv.resume(); // Receive the next value
}
}

Che mi restituisce questo tipo di valori per un telecomando televisivo:

Unknown encoding: FDAC0150(32 bits)
#define Something_DEC 4255908176
#define Something_HEX FDAC0150
Raw (6): 21836 7300 -1650 20250 -1650 31050
Unknown encoding: FDAC0150(32 bits)
#define Something_DEC 4255908176
#define Something_HEX FDAC0150
Raw (6): 8336 7300 -1650 20250 -1650 31150
Unknown encoding: FDAC0150(32 bits)
#define Something_DEC 4255908176
#define Something_HEX FDAC0150
Raw (6): 8286 7300 -1600 20250 -1650 31200

Questi valori li ho ottenuti solamente dopo aver premuto a lungo sul pulsante.

Ora vorrei provare ad usarli per inviare il segnale alla televisione.
Ho usato questo codice:

#include "IRremote.h"
 
IRsend irsend;
 
void setup()
 
{
 
Serial.begin(9600);
 
}
 
int khz=38; //NB Change this default value as neccessary to the correct modulation frequency
 
 
unsigned onoff[] = {21836 ,7300, 1600 ,20250, 1650, 31150   };


void loop() {
 
irsend.sendRaw(onoff, sizeof(onoff)/sizeof(int), khz);
 
delay(10000);
 
irsend.sendRaw(onoff, sizeof(onoff)/sizeof(int), khz);
 
delay(10000);
 
}

Ora non succede nulla. Mi vengono valori diversi alla ricezione e li ho provati tutti… Ma niente

Hai provato ad eliminare il primo numero (21836) dall'array?

cucca:
Hai provato ad eliminare il primo numero (21836) dall'array?

Si li ho provati tutti prima interi poi senza il primo e niente. Secondo te è normale che i segnali vengano diversi? In questo caso come si procede? si va a caso?

jonsy:
Si li ho provati tutti prima interi poi senza il primo e niente. Secondo te è normale che i segnali vengano diversi? In questo caso come si procede? si va a caso?

Sono piuttosto nuovo anche io, soprattutto di IR, ma posso confermarti che i valori possono essere diversi, ma comunque validi in quanto c'è una certa tolleranza...

Io farei queste prove:

  • Verifica di aver collegato il led IR al pin 3 dell'arduino
  • Elimina il primo valore dall'array
  • verifica con la fotocamera di un cellulare non troppo costoso che il tuo led ir emetta il segnale ir (se usi ad esempio un iphone non andrebbe bene in quanto è ben schermato dai ir, io ho usato un moto g, ma puoi vedere se il cell fa al caso tuo provandolo prima con un telecomando che sai funzionare, se vedi la luce del led, usa il cellulare per controllare il led del tuo arduino)

cucca:
Sono piuttosto nuovo anche io, soprattutto di IR, ma posso confermarti che i valori possono essere diversi, ma comunque validi in quanto c'è una certa tolleranza...

Io farei queste prove:

  • Verifica di aver collegato il led IR al pin 3 dell'arduino
  • Elimina il primo valore dall'array
  • verifica con la fotocamera di un cellulare non troppo costoso che il tuo led ir emetta il segnale ir (se usi ad esempio un iphone non andrebbe bene in quanto è ben schermato dai ir, io ho usato un moto g, ma puoi vedere se il cell fa al caso tuo provandolo prima con un telecomando che sai funzionare, se vedi la luce del led, usa il cellulare per controllare il led del tuo arduino)

Ho verificato tutto, il led si vede anche a occhio nudo che si illumina. Ma niente non si muove foglia..