errore programmazione

salve a tutti ho letto una guida online che mi ha incuriosito, ovvero poter comandare da remoto il climatizzatore di casa...giusto per arrivare a casa e trovare un ambiente che assomigli meno ad un forno.
comprato arduino ed ho rilevato i codici ir on e off del telecomando del clima, a questo punto ho copiato il programma che avevo trovato online sostituendo i codici con i miei.
premetto che se copio ed incollo il programma trovato la lettura va a buon fine mentre quando modifico con i miei codici ricevo questo errore che non so decifrare.
forse i codici del mio telecomando sono troppo lunghi e devo modificare nella libreria qualche parametro?
qualcuno può aiutarmi?
grazie a tutti

il programma:

#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

// ON the A/C

unsigned ON[] = {3452069045,4294967295};

// OFF the A/C

unsigned OFF[] = {3003779209,4294967295};



void loop() {

irsend.sendRaw(ON, sizeof(ON)/sizeof(int), khz);

delay(10000);

irsend.sendRaw(OFF, sizeof(OFF)/sizeof(int),khz);

delay(10000);

}

questo l'errore

/Users/diego/Documents/Arduino/climatizzatore/climatizzatore.ino:17:39: warning: narrowing conversion of '3452069045ll' from 'long long int' to 'unsigned int' inside { } [-Wnarrowing]
unsigned ON[] = {3452069045,4294967295};
                                      ^
/Users/diego/Documents/Arduino/climatizzatore/climatizzatore.ino:17:39: warning: large integer implicitly truncated to unsigned type [-Woverflow]
/Users/diego/Documents/Arduino/climatizzatore/climatizzatore.ino:17:39: warning: narrowing conversion of '4294967295ll' from 'long long int' to 'unsigned int' inside { } [-Wnarrowing]
/Users/diego/Documents/Arduino/climatizzatore/climatizzatore.ino:17:39: warning: large integer implicitly truncated to unsigned type [-Woverflow]
/Users/diego/Documents/Arduino/climatizzatore/climatizzatore.ino:21:40: warning: narrowing conversion of '3003779209ll' from 'long long int' to 'unsigned int' inside { } [-Wnarrowing]
unsigned OFF[] = {3003779209,4294967295};
                                       ^
/Users/diego/Documents/Arduino/climatizzatore/climatizzatore.ino:21:40: warning: large integer implicitly truncated to unsigned type [-Woverflow]
/Users/diego/Documents/Arduino/climatizzatore/climatizzatore.ino:21:40: warning: narrowing conversion of '4294967295ll' from 'long long int' to 'unsigned int' inside { } [-Wnarrowing]
/Users/diego/Documents/Arduino/climatizzatore/climatizzatore.ino:21:40: warning: large integer implicitly truncated to unsigned type [-Woverflow]
Lo sketch usa 2830 byte (8%) dello spazio disponibile per i programmi. Il massimo è 32256 byte.

>smilzo: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Guglielmo

... dopo di che ... leggi bene ... quelli NON sono errori, sono warning ed il programma è stato comunque compilato.

Guglielmo

Beh ma 3452069045 ti pare un unsigned int?

Io non credo siano dati da mandare in Raw, posta il risultato del riconoscimento che hai fatto dei codici (hai usato il codice di esempio della libreria IRremote per determinarli?) e vediamo.

Grazie a tutti per la pronta risposta i codici che ho rilevato con la libreria irremote.h sono i seguenti,2 quando accendo e 2 quando spengo

3003779209 spenge
4294967295 spenge

3452069045 accende
4294967295 accende

Quindi i warning non sono errori?
Grazie ancora

smilzo:
Grazie a tutti per la pronta risposta i codici che ho rilevato con la libreria irremote.h sono i seguenti,2 quando accendo e 2 quando spengo

Non ho ancora capito come hai rilevato quei codici, ma carica l'esempio IRrecvDump della libreria IRremote (non so se tu abbia usato questo): sulla seriale ti dice tutto, quale codifica ha riconosciuto, il relativo codice hex, ed i codici Raw.
Ad esempio:

Decoded SONY: 10 (12 bits)
Raw (26): 2500 -600 650 -600 650 -600 650 -600 650 -600 650 -600 650 -600 650 -600 1250 -600 650 -600 650 -600 650 -600 650

oppure

Unknown encoding: 978B578E (49 bits)
Raw (99): 4350 -650 1550 -650 500 -650 1550 -650 1550 -650 500 -650 500 -650 1550 -650 500 -600 550 -650 1550 -650 500 -650 500 -650 1550 -650 1550 -650 500 -650 1600 -600 550 -650 1550 -650 1550 -650 1550 -650 1550 -650 500 -650 1550 -650 1550 -600 1600 -650 500 -650 500 -650 500 -650 500 -650 1550 -650 500 -650 500 -600 1600 -650 1550 -650 1550 -650 500 -650 500 -650 500 -650 500 -650 500 -600 550 -650 500 -650 500 -650 1550 -750 1450 -650 1550 -650 1550 -650 1550 -650

Nel primo caso il valore della codifica è "10" ossia 0x10 e puoi ignorare i codici raw mandando direttamente con sendSony(). Nel secondo invece non è un protocollo standard o comunque codificato dalla IRremote, quindi puoi ignorare la stringa della codifica (978B578E) ed usare la sequenza raw che devi trasformare in quell'array in quanto, come vedi, qui sono realmente degli int (i valori negativi non sono realmente negativi ma indicano la durata di bit a zero, quindi togli semplicemente il segno).

Quindi quei valori che hai indicato suppongo tu li abbia presi converntendo in decimale il codice che ti ha dato la IRRecvDump (ad esempio 3003779209 dovrebbe averti dato B30A0889).

Insomma, cattura questi codici e postali qui, se vuoi che ti consigliamo.

Quindi i warning non sono errori?

Non lo sono allo stesso modo in cui se cerchi di mettere 10 litri di acqua in una bacinella da 1 litro: esce fuori quasi tutta e alla fine hai solo 1 litro. :wink:

grazie docdoc,purtrop osono alla mia prima volta con arduino,ho trovato una guida su internet spiegava i collegamenti e il codice che allego, spero nella giusta maniera qua sotto.
il visualizzatore seriale quando schiaccio il pulsante on\off del clima mi da quelle 2 coppie di codici

#include <IRremote.h>
IRrecv climatizzatore (13);
decode_results codici;
 

void setup() 
{
Serial.begin(9600);
climatizzatore.enableIRIn();


}

void loop() 
{
  if (climatizzatore.decode (&codici))
  {
 Serial.println(codici.value);
 climatizzatore.resume();
 } 

}

Lascia perdere quel codice per ora, apri l'IDE di Arduino, seleziona dal menu File, Esempi, IRremote, IRrecvDump. A quel punto collega il tuo ricevitore IR al pin 11 (o scrivi il numero del pin nella riga "int RECV_PIN = 11;"), caricalo e quando è partito premi i tasti che vuoi intercettare e sul monitor hai quelle codifiche che ti ho indicato: in base a quelle potrai decidere come usarle nel tuo programma.

Occhio comunque alla frequenza di tramissione IR del telecomando (in genere 38kHz) che deve corrispondere col tuo sensore (quale?), solitamente se ottieni valori apparentemente "casuali" o comunque non stabili significa che le frequenze non sono corrette e dovrai cambiare il sensore.

mitico,avro guardato 2 o 3 guide e video e nessuno la faceva cosi semplice...
adesso li ho modificati con actool ed ottengo i valori separati dalle virgole e li inserisco nella sketch che avevo trovato in guida

#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
 
// ON the A/C
unsigned ON[] = {1750,500,450,500,1350,500,450,500,1400,500,400,500,1400,500,400,500,1400,500,400,500,1350,550,400,500,1400,500,1350,500,450,500,1350,500,450,450,1400,500,1350,500,1400,450,1450,500,400,500,450,500,1350,500,1350,500,450,500,450,450,450,500,450,500,1350,500,450,500,450,500,450,500,400,500,1400,500,1350,500,450,500,400,500,450,500,450,450,450,500,1400,500,450,450,450,500,450,500,1350,500,450,450,500,500,400,500,450};
;
 
// OFF the A/C
 
unsigned OFF[] = {1850,500,450,450,1400,500,400,500,1400,450,450,500,1400,500,450,450,1400,500,450,500,1350,500,450,500,1350,500,1350,500,450,550,1350,500,400,500,1400,450,1400,500,1350,500,1400,500,400,500,450,500,1400,500,1350,500,450,500,400,500,450,500,450,450,1400,500,450,500,400,500,450,450,450,550,1350,500,1400,500,400,500,450,500,450,450,450,500,450,450,1400,500,450,500,400,500,450,500,450,500,1400,500,400,500,450,500,400};


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

ho comprato anche la scheda wifi miupanel per provare ad accendere da remoto,l'ho configurata, ma come scrivo la sketch per accendere e spegnere da remoto?
ci sono delle guide?
io ne ho provata una che mi fa accendere un led da remoto, potrebbe essere simile a questa e modificata adeguatamente?

sketch per il led

int led = 2;
void setup()
{
  Serial.begin(57600);       // Inizializzazione della porta seriale (57600 è la velocità di comunicazione)
  pinMode(led,OUTPUT);
  delay(3000);                // ritardo per attendere l'avvio di uPanel
  Serial.println("");        // cancella eventuali messaggi parziali rimasti
  Serial.println("$P:D!488;T*13:&#956Panel - Recensione di danielealberti.it;*20/L1G:0:LED1;/*10W1:0;");
  /*non cancellare questo commento*/
  //"D!488;" serve a impostare il colore di sfondo (in questo caso azzurro)
  //"T*13:&#956Panel - Recensione di danielealberti.it;" scrive un testo (13 è la dimensione del carattere)
  //"*20/L1G:0:LED1;" disegna l'oggetto led con nome "LED"
  //"/*10W1:0;" disegna l'oggetto switch
}
String Msg;
void loop()
{
  int c;
  while ((c = Serial.read()) > '\n') Msg += (char) c;  // leggi i caratteri via seriale e componi il messaggio, fino alla nuova linea '\n'
  if (c == '\n')                                      
  {
    if (Msg.equals("#W10"))  // Se il messaggio ricevuto è "#W10" spegni il led ed invia "#L10" al uPanel
    {
      Serial.println("#L10");    
      digitalWrite(led,LOW);
    }
    if (Msg.equals("#W11"))  // Se il messaggio ricevuto è "#W11" accendi il led ed invia "#L11" al uPanel
    {
      Serial.println("#L11");  
      digitalWrite(led,HIGH);
    }
    Msg = "";
  }
}

immenso grazie :wink:

Ok, bene. Ma da una prima occhiata dal cellulare volevo avvisarti che nei codici che vedo nell'array hai omesso il primo valore raw, mancano 3750 nel primo array e 3850 nel secondo, altrimenti la codifica è tutta al contrario (sono i tempi in microsecondi, il primo dell'accensione del Led IR, il secondo di spegnimento e così via).
Appena possibile vedo meglio gli sketch.

Per il secondo sketch mi sembra sia un argomento totalmente diverso, quindi ti conviene aprire un thread a parte

>smilzo: ... sto sempre aspettando che tu apporti la correzione richiesta QUI ... grazie.

Guglielmo

gpb01:
>smilzo: ... sto sempre aspettando che tu apporti la correzione richiesta QUI ... grazie.

Guglielmo

si scusami Giuliano ma da telefono e tablet non me lo fa fare ,non c'è il tasto code,da lavoro col pc ok.
saluti

Ma certo che c'è anche da cellulare, devi selezionare "More" e da lì "Modify", sopra ci sono i pulsanti. Ma fai prima a fare Quick edit e aggiungere tu a mano i tag (code) e (/code) (qui tra parentesi tonde per farteli vedere, ma devi mettere le quadre). PS io sono da cellulare....

con iOS ?
bo....probabile che mi sbaglio allora.

mi sapresti aiutare per quanto riguarda il funzionamento codici\climatizzatore?
una sketch per verificare se i codici funzionano?
nella guida che avevo seguito ad esempio faceva togliere il primo valore raw

http://ismanettoneblog.altervista.org/blog/come-comandare-il-condizionatore-di-casa-con-arduino-anche-da-remoto/?doing_wp_cron=1498855113.2285850048065185546875

e per quanto riguarda la connessione da remoto allora apro un nuovo topic
grazie ancora

Quella guida mi sembra ben fatta e, a meno dei codici specifici, ti dà tutti i consigli utilizzato dallo stesso autore (io dovendo codificare il telecomando di Sky che ha una codifica particolare non ho usato direttamente i codici raw dati dalla IRremote ma ho acquistato il programma AnalysIR, per cui il discorso del primo valore da scartare non so se sia specifico di quella codifica dei condizionatori).
Per cui usa quei consigli, cambia ovviamente i codici raw con i tuoi e vedi se ti funziona.

docdoc:
Quella guida mi sembra ben fatta e, a meno dei codici specifici, ti dà tutti i consigli utilizzato dallo stesso autore (io dovendo codificare il telecomando di Sky che ha una codifica particolare non ho usato direttamente i codici raw dati dalla IRremote ma ho acquistato il programma AnalysIR, per cui il discorso del primo valore da scartare non so se sia specifico di quella codifica dei condizionatori).
Per cui usa quei consigli, cambia ovviamente i codici raw con i tuoi e vedi se ti funziona.

pe quanto posso aver capito mi sono attenuto alla guida sostituendo i miei codici ai suoi (io solo on-off),sia con il primo valore che senza il primo valore come dice lui.
ma non capisco quando carico il codice in arduino con quei collegamenti della foto al led ir cosa dovrebbe fare?
arduino riproduce ciclicamente accensione e spengimento senza che ci sia un pulsante di avvio?
perche caricando i codici e evvicinando arduino al clima non succede niente,il led ir si accende in genere?
scusate l'ignoranza ma sono piantatpo e non so andare avanti e non capisco se per un problema hardware o software