Seguimi su Youtubue
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Pubblicità Google AdSense
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
Ultimi argomenti
» TOP 5 oggetti che perdi spesso
Da Poderak Gio Lug 13, 2017 4:26 pm

» arduino e ethernet shield tutorial 3
Da mariogori Ven Lug 07, 2017 8:52 pm

» Arduino comandato da cellulare
Da Poderak Ven Lug 07, 2017 6:17 pm

» Simulatore di navi: Traino nave in avaria - European Ship Simulator
Da Poderak Sab Lug 01, 2017 1:16 pm

» arduino e ethernet shield tutorial 3
Da Poderak Gio Giu 29, 2017 8:05 pm

» Farming Simulator 2018 logo
Da Poderak Ven Giu 23, 2017 3:29 pm

» Codice display a 7 segmenti - Arduino
Da fulvio Ven Giu 02, 2017 10:00 am

» DUE SKETCH INSIEME? SI PUO' FARE?
Da Alessandro2003 Mer Mag 31, 2017 6:37 pm

» Smartphone sotto i 70€ economico: Winnovo K43
Da Poderak Mar Mag 30, 2017 10:32 am

I postatori più attivi del mese
Poderak
 
mariogori
 
andrea0099
 

Come posso trasmettere unsegnale ir con arduino?

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Dock il Sab Mar 12, 2016 6:59 pm

Buona sera a tutti volevo chiedere se è possibile approfondire l'argomento di arduinio sugli infrarossi.
Da internet ho scaricato uno sketch tramite il quale è possibile decodificare il segnale di un
telecomando ad infrarossi. Nel mio caso sono interessato ai telecomandi radio e stufe a pellet
decodificando il pulsante di accensione di una radio mi esce questo:

Codice:
Decoded SAMSUNG: 8087887(32 bits)
#define Something_DEC 134772871
#define Something_HEX 8087887
Raw (68): 19500 4500 -4400 600 -550 550 -eccettera non lo riporto tutto per comodità..
 
Bene io ora voglio ritrasmettere questo codice alla radio tramite arduino con un led ir naturalmente,
ho provato a seguire qualche guida ma non ho ben capito come funziona l'inserimento del codice
e sinceramante non ho ben capito neanche  il discorso qui sopra decimale esadecimale e raw..
Qualcuno può aiutarmi Grazie Atutti in anticipo.
avatar
Dock
Livello uno
Livello uno

Messaggi Messaggi : 14
Crediti Crediti : 23
Reputazione Reputazione : 0
Data d'iscrizione Data d'iscrizione : 01.03.16
Età Età : 37

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Poderak il Sab Mar 12, 2016 9:39 pm

Ciao, l'infrarossi è abbastanza complicato da comprendere. Personalmente l'ho provato 5-6 volte, realizzando anche un bel progettino per il condizionatore (non ancora completato) ma purtroppo... Ho bruciato il ricevitore!! Laughing Laughing

Ti passo un progetto che sono riuscito a recuperare (trasmette segnale di accensione e spegnimento):

Codice:

#include <IRremote.h> //inserisco la libreria

IRsend irsend; //nome dell'ir che assegno

void setup()
{
  Serial.begin(9600);
}
int khz=38;
unsigned acc[] ={8300,4250,400,1700,450,550,500,550,450,600,450,1650,450,600,450,600,450,600,400,650,450,550,450,600,500,550,450,600,450,600,450,600,450,600,450,600,450,1650,450,1600,450,1650,450,600,450,1650,400,650,450,550,500,1600,450,600,450,1650,450,1650,450}; //il codice indicato nel raw
unsigned off[] ={8300,4200,500,1600,500,550,500,550,500,550,450,1600,550,500,500,550,500,550,500,1600,500,1600,450,600,500,500,550,500,550,500,500,550,500,550,500,550,500,550,500,550,450,600,450,550,550,1550,500,550,500,1600,450,600,500,500,500,600,450,1600,550}; //il codice indicato nel raw

void loop() {

irsend.sendRaw(acc, sizeof(acc)/sizeof(int), khz); //accende
delay(5000);
irsend.sendRaw(off, sizeof(off)/sizeof(int), khz); //spegne
delay(5000);
}
In pratica inserisci il codice raw in un array. Per esempio nel codice ho inserito due segnali: on/ff. In pratica tu dovrai inserire questo:
Codice:
19500 4500 -4400 600 -550 550 -eccettera non lo riporto tutto per comodità..
ovviamente dovrai inserire le virgole.

Infine nel loop inserisci il comando per avviarlo. Il metodo è .sendRaw(). Questo metodo ha tre elementi (prendiamo in esempio l'accensione, mostrato nel codice):
- acc: Nome dell'array indicato nella parte sopra del programma.
- sizeof(acc)/sizeof(int): Sono le dimensioni. Devi sostituire semplicemente acc con il nome del tuo array.
- khz: E' la variabile che abbiamo indicato all'inizio.

Fammi sapere se ti è stato utile e se sei riuscito a farlo funzionare in qualche modo Ciao!
avatar
Poderak
♔ Amministratore

Messaggi Messaggi : 4196
Crediti Crediti : 11726
Reputazione Reputazione : 186
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedi il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Dock il Sab Mar 19, 2016 8:11 pm

Ciao scusami il ritardo nella risposta ma solo oggi ho potuto applicarmi!!!
Il codice da te postato funziona benissimo sono riuscito ad inviare i segnali ir
correttamente ad una stufa a pellet della extraflame che monta elettronica micronova.
Ho preso il codice raw cancellato la prima serie di numeri e nei rimanenti ho sostituito i trattini
e gli spazi con delle virgole posto codici e schemi che ho usato.
Codice per il ricevitore:
Codice:
#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
  }
}

Schema che ho seguito per connettere il ricevitore ad arduino:



codice per emettitore cioè il tuo Very Happy


Codice:

#include <IRremote.h> //inserisco la libreria

IRsend irsend; //nome dell'ir che assegno

void setup()
{
  Serial.begin(9600);
}
int khz=38;
unsigned
 acc[]
={8300,4250,400,1700,450,550,500,550,450,600,450,1650,450,600,450,600,450,600,400,650,450,550,450,600,500,550,450,600,450,600,450,600,450,600,450,600,450,1650,450,1600,450,1650,450,600,450,1650,400,650,450,550,500,1600,450,600,450,1650,450,1650,450};
 //il codice indicato nel raw
unsigned off[]
={8300,4200,500,1600,500,550,500,550,500,550,450,1600,550,500,500,550,500,550,500,1600,500,1600,450,600,500,500,550,500,550,500,500,550,500,550,500,550,500,550,500,550,450,600,450,550,550,1550,500,550,500,1600,450,600,500,500,500,600,450,1600,550};
 //il codice indicato nel raw

void loop() {

irsend.sendRaw(acc, sizeof(acc)/sizeof(int), khz); //accende
delay(5000);
irsend.sendRaw(off, sizeof(off)/sizeof(int), khz); //spegne
delay(5000);
}

Schema emettitore:

Ora mi metto a buttar giù un progettino con le cose che mi hai insegnato sento già che avrò bisogno ancora del tuo aiuto GRAZIE Very Happy
avatar
Dock
Livello uno
Livello uno

Messaggi Messaggi : 14
Crediti Crediti : 23
Reputazione Reputazione : 0
Data d'iscrizione Data d'iscrizione : 01.03.16
Età Età : 37

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Poderak il Dom Mar 20, 2016 7:18 pm

Grande @Dock! Very Happy
avatar
Poderak
♔ Amministratore

Messaggi Messaggi : 4196
Crediti Crediti : 11726
Reputazione Reputazione : 186
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedi il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Germano il Mar Mar 22, 2016 7:33 pm

questo mi mancava. Penso di usarlo anche io, grazie
avatar
Germano
Livello uno
Livello uno

Messaggi Messaggi : 19
Crediti Crediti : 28
Reputazione Reputazione : 2
Data d'iscrizione Data d'iscrizione : 15.02.16
Età Età : 30
Località Località : Milano

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Poderak il Mar Mar 22, 2016 10:49 pm

Prego Very Happy
avatar
Poderak
♔ Amministratore

Messaggi Messaggi : 4196
Crediti Crediti : 11726
Reputazione Reputazione : 186
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedi il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum