Go Down

Topic: Problema ricevitore IR TSOP1738 (Read 2662 times) previous topic - next topic

zioCri

Allora ora ci provo e ti faccio sapere.
Per ora grazie mille Lollo82 per il supporto!

Lollo82

#16
Sep 10, 2018, 02:52 pm Last Edit: Sep 10, 2018, 02:58 pm by Lollo82
Allora, intanto non dirlo nemmeno per scherzo... Con tutte le volte che il supporto è stato dato a me, il minimo che posso fare anche se purtroppo nel mio molto piccolo mi pare contribuire.
Secondo, ho analizzato i diversi codici panasonic presenti nel telecomando universale e come puoi vedere dalle immagini, la più grossa difficoltà che hai nel decodificarli è che come accade per il COMFEE lo stesso codice viene inviato più volte dopo una pausa (che probabilmente la libreria IRremote interpreta come termine della trasmissione) che misuro e ti saprò dire di quanto è.

Primo codice: Come puoi vedere viene inviato 3 volte lo stesso codice con una pausa.
https://www.dropbox.com/s/ggvsaqlofynu5jn/PrimoCodice.png?dl=0

Secondo codice: In questo caso il comando viene inviato 2 volte sempre con una pausa tra un invio e l'altro.
https://www.dropbox.com/s/nkyyu4it2thvrxm/SecondoCodice.png?dl=0

Terzo codice: Qua viene prima inviato un codice probabilmente di controllo e successivamente il comando.
https://www.dropbox.com/s/a0h1wozbvdx2su0/TerzoCodice.png?dl=0

Quarto codice: Praticamente identico al terzo

Quinto codice: Qui come nel primo, il comando viene inviato 3 volte, a occhio e croce cambiano oltre al codice i tempi.
https://www.dropbox.com/s/qk67iqob0z6olgx/QuintoCodice.png?dl=0

Sesto codice: Praticamente uguale al terzo e quarto
https://www.dropbox.com/s/3lpxb0vxv4skmnm/SestoCodice.png?dl=0

Settimo codice: Anche qua lo stesso comando viene inviato due volte a distanza di un ritardo.
https://www.dropbox.com/s/8oz3pgpy99v616v/SettimoCodice.png?dl=0

Non so quale sarà di questi che può controllare il tuo, ma estrapolando un raw per codice e testandolo lo troviamo. Riuscissi a inviare il raw (anche se non completo) che ti trovi col tuo sarebbe la mortre sua.

Lollo82

Intanto se hai voglia prova ad inviare questo codice al tuo climatizzatore con il led ir. È la replica della prima codifica, dovrebbe iniziare a lavorare a 28 gradi come climatizzatore. (Non so dirti se è il codice di accensione). L'importante è che senti il bip.
Lo invia di continuo ogni 2 secondi. Il trasmettitore tienilo molto vicino al ricevitore del clima perchè il led connesso direttamente ad arduino con una resistenza ha una portata ridicola.

Code: [Select]
#include "IRremote.h"
 
IRsend irsend;
 
void setup()
{
  Serial.begin(9600);
}
 
unsigned int TestCodice1[55]={3500, 3500, 900, 850, 900, 800, 900, 2600, 900, 2600, 850, 850, 900, 800, 900, 2600, 900, 800, 900, 2600, 900, 850, 850, 850, 900, 800, 900, 850, 850, 2650, 850, 2600, 900, 850, 850, 850, 900, 2600, 900, 2550, 900, 850, 900, 2600, 850, 850, 900, 2600, 900, 2600, 850, 2600, 900, 2600, 900};
 
void loop() {
  for(int i=0; i<3; i++){
    irsend.sendRaw(TestCodice1,55,38);
    delay(29);
 
 
  }
  Serial.println("Test");
  delay(2000);
 }

zioCri

Niente, il codice che hai postato non va...

In compenso sono riuscito, con la modifica alla libreria che mi hai suggerito, di rilevare i codici RAW rispettivamente di spegni, accendi, spegni (tutto a 28.5°C).

Code: [Select]
Decoded Panasonic: 7200000(48 bits)
#define Something_DEC 119537664
#define Something_HEX 7200000
Raw (101): 664 3550 -1600 550 -300 550 -1200 500 -350 500 -350 500 -350 550 -300 550 -300 550 -350 500 -350 500 -350 550 -300 550 -350 500 -350 500 -1200 550 -300 550 -300 550 -350 500 -350 500 -350 500 -350 550 -300 550 -1150 550 -1200 500 -1200 550 -300 550 -350 550 -1150 550 -300 550 -350 500 -350 500 -350 550 -300 550 -300 550 -300 550 -350 500 -350 500 -350 550 -300 550 -300 550 -300 550 -350 550 -300 550 -300 550 -350 500 -350 500 -350 500 -350 550 -300 550 -300

Decoded Panasonic: 7200000(48 bits)
#define Something_DEC 119537664
#define Something_HEX 7200000
Raw (101): -11352 3500 -1650 500 -400 450 -1250 500 -350 500 -350 500 -350 500 -350 500 -400 450 -400 450 -400 500 -350 500 -400 450 -400 500 -350 500 -1200 500 -400 500 -350 450 -400 450 -400 500 -350 500 -350 500 -350 500 -1250 500 -1200 500 -1200 550 -350 500 -350 500 -1250 500 -350 500 -350 500 -350 500 -350 500 -350 550 -350 500 -350 500 -350 500 -350 500 -350 500 -350 500 -400 600 -250 550 -300 500 -350 550 -350 500 -350 500 -350 550 -300 500 -350 600 -250 550 -350

Decoded Panasonic: 7200000(48 bits)
#define Something_DEC 119537664
#define Something_HEX 7200000
Raw (101): -2392 3600 -1600 500 -350 550 -1150 550 -300 550 -350 500 -350 500 -350 550 -300 550 -300 550 -300 550 -350 550 -300 550 -300 550 -350 500 -1200 500 -350 550 -300 550 -300 550 -350 500 -350 500 -350 500 -350 550 -1150 550 -1200 500 -1200 550 -300 550 -350 500 -1200 550 -300 550 -300 550 -300 550 -350 500 -350 500 -350 550 -300 550 -300 550 -300 550 -350 500 -350 500 -350 550 -300 550 -350 550 -300 550 -300 550 -300 550 -300 550 -350 500 -350 500 -350 500 -350


Il passo avanti è stato fatto ma purtroppo ho provato ad inviare il primo di questi (eliminando il primo valore, tutti i meno, mettendo un virgola) e niente, ancora non va.

Lollo82

È normale. Perchè il momento della pausa viene interpretato come fine trasmissione quando in realtà non lo è. Ma con il raw che hai trovato dovrei riuscire a capire quale codifica tra le 7 del telecomando che ho io è quella corretta. Più tardi mi metto al pc, guardo e ti scrivo.

Lollo82

Ci son tre codifiche che sono uguali al tuo inizio, dopo quello che hai rilevato tu c'è ancora una badilata di codice. Il raw l'ho scritto a mano e paragonato all'originale è praticamente uguale. Spero funzioni. Una volta che sappiamo che è quella, procedere è piuttosto semplice.
La prima parte dalle prove che ho fatto è uguale per qualunque comando, varia la seconda. Comunque domani faccio altre prove e confermo.
Il codice col raw è questo

Code: [Select]
#include "IRremote.h"
 
IRsend irsend;
 
void setup()
{
  Serial.begin(9600);
}
 
unsigned int TestCodice1[441]={3500,1750,400,400,400,1350,400,400,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,400,450,400,450,400,400,1300,450,400,400,400,450,400,400,450,400,400,450,400,400,450,400,1300,400,1300,450,1300,400,400,450,400,450,1250,450,400,450,400,400,400,450,400,450,400,400,400,400,450,450,400,400,400,400,450,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,400,400,450,400,1300,450,1300,400,400,450,400,450,400,400,400,450,400,400,9500,3500,1750,440,400,440,1300,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,1300,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,1300,440,1300,440,1300,440,400,440,400,440,1300,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,1300,440,400,440,400,440,400,440,1300,440,1300,440,400,440,400,440,400,440,1300,440,1300,440,400,440,1300,440,1300,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,1300,440,1300,440,1300,440,1300,440,1300,440,400,440,1300,440,400,440,1300,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,1300,440,1300,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,1300,440,1300,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,1300,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,1300,440,1300,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,400,440,1300,440,400,440,400,440,400,440,1300,440};
 
void loop() {
  irsend.sendRaw(TestCodice1,441,38);
  /*
  for(int i=0; i<3; i++){
    irsend.sendRaw(TestCodice1,135,38);
    delayMicroseconds(14000);
 
 
  }
  */
  Serial.println("Test");
  delay(1500);
 }


Prima di caricarlo rimetti il rawbuf al numero originale, altrimenti non riesci a caricare lo sketch per consumo eccessivo di ram. (In effetti il raw è da 441).
Ricordandoti di mettere arduino vicinissimo al ricevitore incrocio le dita per un segno di vita!!!
Buona serata!!!

Lollo82

Ti invio altri codici da provare (In quello che ti ho inviato ieri credo che ci sia da qualche parte un bit in più).

Aria condizionata 25 gradi ventola automatica
Code: [Select]

#include "IRremote.h"
 
IRsend irsend;
 
void setup()
{
  Serial.begin(9600);
}
 
unsigned int TestCodice1[440]={3500,1700,450,400,400,1300,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,1300,400,400,450,400,450,400,400,400,450,400,450,400,400,450,400,1300,400,1300,450,1250,450,400,450,400,400,1300,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,400,450,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,1250,450,1300,400,400,450,400,450,400,400,400,450,400,400,9800,3450,1700,450,400,400,1300,400,450,400,400,400,450,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,400,450,1300,400,400,450,400,400,400,450,400,450,400,400,400,450,400,400,1350,400,1300,400,1300,400,450,400,450,400,1300,400,450,400,400,450,400,400,450,400,400,400,450,400,450,350,450,450,400,400,450,400,400,450,400,400,450,400,1300,400,450,350,450,400,450,400,1300,450,1250,450,400,400,450,400,400,450,400,450,400,400,400,450,1300,400,1300,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,1250,450,1300,400,1300,450,1250,450,1300,400,400,450,1300,400,400,450,1300,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,400,450,400,400,1300,450,1300,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,450,400,400,450,1300,400,1300,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,400,450,400,400,450,400,1300,400,450,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,1300,450,1300,400,400,450,400,400,400,450,400,450,400,400,400,450,1300,400,400,450,400,450,400,400,400,450,400,450,1250,450,3060};
 
void loop() {
  irsend.sendRaw(TestCodice1,440,38);
  Serial.println("Test");
  delay(1500);
 }


Pompa di calore 26 gradi, ventola automatica
Code: [Select]

#include "IRremote.h"
 
IRsend irsend;
 
void setup()
{
  Serial.begin(9600);
}
 
unsigned int TestCodice1[440]={3500,1700,450,400,400,1300,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,1300,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,1300,400,1300,450,1250,450,400,450,400,400,1300,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,1300,450,1250,450,400,450,400,400,400,450,400,450,400,400,9800,3400,1750,400,400,450,1300,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,1250,450,400,450,400,400,400,450,400,400,450,400,400,450,400,400,1300,450,1300,400,1300,400,450,400,400,450,1300,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,1300,400,400,450,400,400,400,450,400,450,400,400,1300,450,400,400,400,450,400,450,1250,450,400,450,1250,450,1300,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,1300,450,1250,450,1300,400,1300,450,1250,450,1300,400,1300,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,1300,400,1300,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,1300,450,1250,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,450,400,400,450,400,400,400,450,400,450,1250,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,1300,400,1300,450,400,400,400,450,400,400,450,400,400,450,400,400,1300,450,1300,400,400,450,400,400,1300,450,400,400,450,400,12670};
 
void loop() {
  irsend.sendRaw(TestCodice1,440,38);
  Serial.println("Test");
  delay(1500);
 }


Aria condizionata 21 gradi, ventola automatica
Code: [Select]

#include "IRremote.h"
 
IRsend irsend;
 
void setup()
{
  Serial.begin(9600);
}
 
unsigned int TestCodice1[440]={3500,1750,400,400,450,1250,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,1300,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,1300,450,1250,450,1300,400,400,450,400,450,1250,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,450,400,400,450,1300,400,1300,400,400,450,400,450,400,400,400,450,400,450,9750,3450,1700,450,400,400,1300,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,1250,450,400,450,400,400,450,400,400,450,400,400,400,450,400,450,1250,450,1300,400,1300,450,400,400,450,400,1300,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,1300,400,400,450,400,400,450,400,1300,400,1300,450,400,400,450,400,400,450,1300,400,400,450,1250,450,400,450,1300,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,400,450,1300,400,1300,450,1250,450,1300,400,1300,450,400,400,1300,450,400,400,1300,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,400,400,450,400,450,400,400,450,400,400,450,400,400,400,450,400,450,1300,400,1300,400,400,450,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,1300,400,1300,450,400,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,1300,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,1300,450,1250,450,400,450,400,400,400,450,400,450,400,400,450,400,400,450,1250,450,1300,400,1300,450,1300,400,1300,400,400,450,30830};
 
void loop() {
  irsend.sendRaw(TestCodice1,440,38);
  Serial.println("Test");
  delay(1500);
 }


Incrocio le dita!!!

zioCri

Scusa se rispondo solo ora ma non sono riuscito prima a provare tutto.
Porto grandi notizie, questi ultimi codici che mi hai caricato funzionano benissimo. Per di più il segnale riesco ad inviarlo ad una distanza di 4m circa.

Ora ti chiedo l'ultima gentilezza, vorrei capire come hai fatto così che possa trovare i raw anche io. Sarebbe troppo chiederti di più, hai già fatto molto!

Lollo82

Evvai!!! Son proprio contento che funzioni.
Certo, ti passo la libreria con le modifiche che ho fatto, così sposti la tua originale in una cartella, al suo posto metti quella che ti invio, una volta che ti sei scaricato tutti i codici che ti interessano la cancelli e ci rimetti la tua.
Lo sketch che carico per visualizzare i raw è questo:
Code: [Select]

/*
 * 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
 * JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
 * LG added by Darryl Smith (based on the JVC protocol)
 */

#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 == PANASONIC) {
    Serial.print("Decoded PANASONIC - Address: ");
    Serial.print(results->panasonicAddress,HEX);
    Serial.print(" Value: ");
  }
  else if (results->decode_type == LG) {
     Serial.print("Decoded LG: ");
  }
  else if (results->decode_type == JVC) {
     Serial.print("Decoded JVC: ");
  }
  Serial.print(results->value, HEX);
  Serial.print(" (");
  Serial.print(results->bits, DEC);
  Serial.println(" bits)");
  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(" ");
  }
 


Se tutto va come deve andare dovresti ritrovarti con una uscita sul serial monitor simile a questa:
FD412083
Unknown encoding: FD412083 (32 bits)
Raw (440): 28764 3500 -1700 450 -400 400 -1300 400 -450 400 -400 450 -400 400 -450 400 -400 450 -400 400 -450 400 -400 450 -400 400 -450 400 -400 450 -1300 400 -400 450 -400 400 -450 400 -400 450 -400 450 -400 400 -400 450 -1300 400 -1300 450 -1250 450 -400 450 -400 400 -1300 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 400 -450 400 -400 450 -400 450 -400 400 -400 450 -400 400 -450 400 -400 450 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 400 -400 450 -400 400 -450 400 -400 450 -400 450 -400 400 -1300 450 -1250 450 -400 450 -400 400 -400 450 -400 400 -450 400 -9750 3500 -1700 400 -450 400 -1300 400 -450 400 -400 400 -450 400 -450 400 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 450 -1250 450 -400 400 -450 400 -400 450 -400 450 -400 400 -400 400 -450 450 -1250 450 -1300 400 -1300 400 -450 400 -400 450 -1300 400 -400 450 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -1300 400 -400 450 -400 450 -400 400 -1300 450 -1250 450 -400 400 -450 400 -400 400 -1350 400 -400 450 -1300 400 -400 450 -1300 400 -400 450 -400 400 -450 400 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -1300 400 -1300 450 -1250 450 -1300 400 -1300 450 -400 400 -1300 450 -400 400 -1300 450 -400 400 -400 450 -400 450 -400 400 -450 400 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -1300 400 -1300 400 -450 400 -400 450 -400 400 -450 400 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -1300 400 -1300 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 450 -400 400 -450 400 -400 450 -400 400 -400 450 -400 450 -400 400 -450 400 -400 450 -400 400 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 450 -400 400 -1300 450 -400 400 -450 400 -400 450 -400 400 -400 450 -400 450 -400 400 -400 450 -400 450 -1300 400 -1300 400 -450 400 -400 450 -400 400 -450 400 -400 450 -400 400 -400 450 -1300 400 -1300 450 -1250 450 -1300 400 -1300 450 -400 400

Con 440 valori, se ne hai meno qualcosa non quadra.
Una volta che hai il raw scarti il primo valore, nel caso sopra 28764 levi i meno e metti le virgole, io per far prima uso un editor di testo e con la funzione trova e sostituisci cambio prima i meno in carattere vuoto, dopodiche gli spazi in virgole (se no ci metto una vita).
E lo sostituisci al raw nel seguente sketch:
Code: [Select]

#include "IRremote.h"
 
IRsend irsend;
 
void setup()
{
  Serial.begin(9600);
}
 
unsigned int TestCodice1[439]={3450,1750,400,400,450,1300,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,1250,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,1250,450,1300,400,1300,450,400,400,400,450,1300,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,450,1300,400,1300,400,450,400,400,450,400,400,450,400,400,450,9750,3450,1700,450,400,400,1300,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,1300,400,400,450,400,450,400,400,400,450,400,400,400,450,400,450,1300,400,1300,400,1300,450,400,400,400,450,1300,400,400,450,400,450,400,400,400,450,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,1300,400,400,450,400,450,400,400,1300,450,1250,450,400,450,400,400,400,450,400,400,400,450,1300,400,450,400,1300,400,400,450,400,450,400,400,400,450,400,450,400,400,450,400,400,450,400,400,1300,450,1300,400,1300,400,1300,450,1300,400,400,450,1250,450,400,450,1250,450,400,450,400,400,400,450,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,1300,450,1250,450,400,450,350,450,400,450,400,400,450,400,400,450,400,400,450,400,400,450,400,400,1300,450,1250,450,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,450,400,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,400,450,1300,400,400,450,400,400,450,400,400,450,400,400,400,450,400,450,400,400,400,450,1300,400,1300,450,400,400,400,450,400,400,450,400,400,450,400,400,1300,450,400,400,1300,450,1300,400,1300,400,1300,450,400,400};
 
void loop() {
  irsend.sendRaw(TestCodice1,439,38);
  Serial.println("Test");
  delay(1500);
 }

E il gioco è fatto.
In bocca al lupo per il tuo lavoro.

zioCri

Ti ringrazio tantissimo, sei stato di vitale importanza per poter concludere il mio progetto.

Ora appena ritrovo un po' di tempo libero mi ci metto e provo a fare tutto, spero di non aver più bisogno di niente...

Grazie ancora!


Lollo82

Figurati, ci mancherebbe ancora.

zioCri

Niente Lollo, mi dispiace ma devo richiedere il tuo aiuto nuovamente.

Ho fatto come mi hai detto, levato la libreria che avevo, incollato quella tua, poi caricato lo sketch che mi hai dato ma nel momento in cui provo a compilarlo mi da errore.

Code: [Select]
Arduino:1.7.10 (Windows 8.1), Scheda:"Arduino Uno"

rilevatore_codiciIR_condizionatore.ino: In function 'void dump(decode_results*)':

rilevatore_codiciIR_condizionatore.ino:53:36: error: 'LG' was not declared in this scope

Errore durante la compilazione


Allora io ho provato ad eliminare la parte di codice con "LG" che tanto non dovrebbe servirmi. Ricompilo tutto e mi esce questo errore

Code: [Select]
Arduino:1.7.10 (Windows 8.1), Scheda:"Arduino Uno"

C:UsersBICCHI~1AppDataLocalTempbuild7727068981919128279.tmp/core.a(main.cpp.o): In function `main':

C:Program Files (x86)Arduinohardwarearduinoavrcoresarduino/main.cpp:43: undefined reference to `loop'

collect2.exe: error: ld returned 1 exit status

Errore durante la compilazione"


Cosa posso fare?

gpb01

#27
Sep 24, 2018, 08:09 pm Last Edit: Sep 24, 2018, 08:09 pm by gpb01
... direi che hai eliminato qualche cosa di troppo ... visto che non vede più il "void loop()" (... e te lo dice pure chiaramente, basta leggere con attenzione gli errori).

Controlla di non aver lasciato aperta qualche parentesi graffa ...

Guglielmo
Search is Your friend ... or I am Your enemy !

Lollo82

Stranissimo ti ho zippato la libreria che ho io e a me lo sketch lo compila benissimo (anche con la parte LG che anche se non utilizzerai, perchè non ne utilizzerai nessuna di quelle,  non crea alcun problema).
Mi viene il dubbio, non è che nella cartella delle libraries hai ancora la libreria robotIRremote??? Fosse così può essere che lui utilizza quella e ovviamente non trova il tipo di dato.
Controlla e se c'è spostala. E lasciala spostata anche quando alla fine cancelli quella che ti ho mandato e ci rimetti la tua. Se usi un'altra IRremote rompe solo le palle e basta.

zioCri

Grazie per l'aiuto tempestivo.
Dovrebbe essere come dice Guglielmo, credo che manchi il void loop nello sketch che mi hai passato tu Lollo. Infatti mancava anche una parentesi graffa alla fine del programma, magari non hai selezionato tutto nel fare copia ed incolla?

Lo sketch che carico per visualizzare i raw è questo:
Code: [Select]

/*
 * 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
 * JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
 * LG added by Darryl Smith (based on the JVC protocol)
 */

#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 == PANASONIC) {
    Serial.print("Decoded PANASONIC - Address: ");
    Serial.print(results->panasonicAddress,HEX);
    Serial.print(" Value: ");
  }
  else if (results->decode_type == LG) {
     Serial.print("Decoded LG: ");
  }
  else if (results->decode_type == JVC) {
     Serial.print("Decoded JVC: ");
  }
  Serial.print(results->value, HEX);
  Serial.print(" (");
  Serial.print(results->bits, DEC);
  Serial.println(" bits)");
  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(" ");
  }
 

La libreria robotIRremot già l'avevo spostata perchè mi aveva dato errori in precedenza.

Comunque ho aggiunto il seguente void loop()
Code: [Select]
void loop() {
  if (irrecv.decode(&results)) {
    dump(&results);
    irrecv.resume(); // Receive the next value
  }
}


credo che ancora non ci siamo, perchè mi trova RAW da 132 ed inoltre mi da  "Decoded PANASONIC - Address: 4004 Value: 7200000 (48 bits)"

Go Up