Wiki Info
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.
Ricerca Avanzata
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
Ultimi argomenti attivi
» Comunicazione termine servizio Arduino BT Control
Da Admin Mar Mag 10, 2022 12:55 pm

» Robot aspirapolvere per Alexa: Dreame D9
Da Admin Mar Feb 09, 2021 9:42 am

» Come costruire un robot smart con Arduino
Da Admin Mar Nov 17, 2020 12:15 pm

» TOPPS Trading Cards Match Attax Champsion League/Europa League 2020/21
Da Admin Mar Nov 10, 2020 3:21 pm

» Guida per utilizzare Arduino BT Control v1.2
Da Admin Gio Lug 09, 2020 12:01 pm

» Recensione Umidigi A3 Pro - Smartphone sotto i 100€
Da Admin Gio Apr 04, 2019 12:22 pm

» [Arduino] aiuto programma
Da Glak Mar Mar 12, 2019 9:30 am

» ERRORE NELLA COMPILAZIONE NEXTION
Da papat Mar Feb 26, 2019 7:11 am

» Comandare la Smart TV con Alexa senza broadlink (gratis)
Da Admin Mar Feb 19, 2019 4:31 pm

I postatori più attivi del mese
Nessun utente


Come posso trasmettere unsegnale ir con arduino?

3 partecipanti

Andare in basso

Come posso trasmettere unsegnale ir con arduino? Empty Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Dock 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.
Dock
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à : 44

Torna in alto Andare in basso

Come posso trasmettere unsegnale ir con arduino? Empty Re: Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Admin 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!
Admin
Admin
♔ Amministratore

Messaggi Messaggi : 4370
Crediti Crediti : 12173
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 26

https://wikiinfo.forumattivo.it

Torna in alto Andare in basso

Come posso trasmettere unsegnale ir con arduino? Empty Re: Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Dock 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:

Come posso trasmettere unsegnale ir con arduino? Schema11

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:
Come posso trasmettere unsegnale ir con arduino? Schema12
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
Dock
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à : 44

Torna in alto Andare in basso

Come posso trasmettere unsegnale ir con arduino? Empty Re: Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Admin Dom Mar 20, 2016 7:18 pm

Grande @Dock! Very Happy
Admin
Admin
♔ Amministratore

Messaggi Messaggi : 4370
Crediti Crediti : 12173
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 26

https://wikiinfo.forumattivo.it

Torna in alto Andare in basso

Come posso trasmettere unsegnale ir con arduino? Empty Re: Come posso trasmettere unsegnale ir con arduino?

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

questo mi mancava. Penso di usarlo anche io, grazie
Germano
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à : 37
Località Località : Milano

Torna in alto Andare in basso

Come posso trasmettere unsegnale ir con arduino? Empty Re: Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Admin Mar Mar 22, 2016 10:49 pm

Prego Very Happy
Admin
Admin
♔ Amministratore

Messaggi Messaggi : 4370
Crediti Crediti : 12173
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 26

https://wikiinfo.forumattivo.it

Torna in alto Andare in basso

Come posso trasmettere unsegnale ir con arduino? Empty Re: Come posso trasmettere unsegnale ir con arduino?

Messaggio Da Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Torna in alto

- Argomenti simili

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