Go Down

Topic: Aiuto per codice comunicazione IR -RISOLTO- (Read 7039 times) previous topic - next topic

jacopo99

ho provato a fare così:
Code: [Select]
#include <IRremote.h>

int RECV_PIN = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;
String stato;
int pinArray[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int count = 0;
int timer = 9;
int statoA=0;
int statoB=0;
int statoC=0;
void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  for (count=2;count<13;count++) {
    pinMode(pinArray[count], OUTPUT);
  }
}


void loop() {
  if (irrecv.decode(&results)) {
     Serial.println(results.value);
 
   if(stato = "kitt"){
    statoC=1;
    }
    if(results.value == 551520375){
    stato = "acceso1";
   
    }
    else if (results.value == 551504055) {
    stato = "acceso2";
    }
    else if (results.value == 551536695) {
    stato = "acceso3";
    }
    else if (results.value == 551495895) {
    stato = "acceso4";
    }
    else if (results.value == 551528535) {
    stato = "acceso5";
    }
    else if (results.value == 551512215) {
    stato = "acceso6";
    }
    else if (results.value == 551544855) {
    stato = "acceso7";
    }
    else if (results.value == 551491815) {
    stato = "acceso8";
    }
    else if (results.value == 551524455) {
    stato = "acceso9";
    }
    else if (results.value == 551486205) {
    stato = "acceso10";
    }
     else if (results.value == 551518845) {
    stato = "acceso11";
    }
    else if (results.value == 551536185) {
    stato = "mantieniacceso";
    }
    else if (results.value == 551505585) {
    stato = "kitt";
    }
    else if (results.value == 551519865) {
    stato = "spento";
    }
    else if (results.value == 551534655)  {
    stato = "velocità+1";
   
    }
    else if (results.value == 551502015) {
    stato = "velocità-1";
    };
   
    if(stato == "acceso1"){
    digitalWrite(2, HIGH);
    }
    else if (stato == "acceso2") {
    digitalWrite(3, HIGH);
    }
    else if (stato == "acceso3") {
    digitalWrite(4, HIGH);
    }
    else if (stato == "acceso4") {
    digitalWrite(5, HIGH);
    }
    else if (stato == "acceso5") {
    digitalWrite(6, HIGH);
    }
    else if (stato == "acceso6") {
    digitalWrite(7, HIGH);
    }
    else if (stato == "acceso7") {
    digitalWrite(8, HIGH);
    }
    else if (stato == "acceso8") {
    digitalWrite(9, HIGH);
    }
    else if (stato == "acceso9") {
    digitalWrite(10, HIGH);
    }
    else if (stato == "acceso10") {
    digitalWrite(11, HIGH);
    }
    else if (stato == "acceso11") {
    digitalWrite(12, HIGH);
    }
     
       else if (stato == "velocità+1") {
    timer++;
    }
    else if (stato == "velocità-1") {
    timer-=timer-1;
    }

    else if (stato == "mantieniacceso") {
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
    }
}else{
if ((statoC==1)&&(statoA==0)){
statoB=1-statoB;
delay(10);
}
statoA=statoC;
if(statoB==1){
for (count=2;count<13;count++)
    {
   digitalWrite(pinArray[count], HIGH);
   delay(timer);
   digitalWrite(pinArray[count + 1], HIGH);
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(timer*2);
  }
  for (count=13;count>2;count--) {
   digitalWrite(pinArray[count], HIGH);
   delay(timer);
   digitalWrite(pinArray[count - 1], HIGH);
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(timer*2);
  }
  }
}
if else {
  ((statoC==1)&&(statoA==1)){
statoB=0;
delay(10);
}
statoA=statoC;
if(statoB==0){
digitalWrite(pinArray[count], LOW);
}
}

   
    else if (stato == "spento") {
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
    };   
   
   
   
    irrecv.resume(); // Receive the next value
  }
}

solo che mi da un errore...

Erik86

adesso non ci sono errori; prova
però col codice che ti ho detto io se premi kitt parte il ciclo for e se lo ripremi si ferma. è questo che vuoi? prova a caricarlo intanto

Erik86

Code: [Select]
#include <IRremote.h>

int RECV_PIN = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;
String stato;
int pinArray[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int count = 0;
int timer = 9;
int statoA=0;
int statoB=0;
int statoC=0;
void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  for (count=2;count<13;count++) {
    pinMode(pinArray[count], OUTPUT);
  }
}


void loop() {
  if (irrecv.decode(&results)) {
     Serial.println(results.value);
 
   if(stato = "kitt"){
    statoC=1;
    }
    if(results.value == 551520375){
    stato = "acceso1";
   
    }
    else if (results.value == 551504055) {
    stato = "acceso2";
    }
    else if (results.value == 551536695) {
    stato = "acceso3";
    }
    else if (results.value == 551495895) {
    stato = "acceso4";
    }
    else if (results.value == 551528535) {
    stato = "acceso5";
    }
    else if (results.value == 551512215) {
    stato = "acceso6";
    }
    else if (results.value == 551544855) {
    stato = "acceso7";
    }
    else if (results.value == 551491815) {
    stato = "acceso8";
    }
    else if (results.value == 551524455) {
    stato = "acceso9";
    }
    else if (results.value == 551486205) {
    stato = "acceso10";
    }
     else if (results.value == 551518845) {
    stato = "acceso11";
    }
    else if (results.value == 551536185) {
    stato = "mantieniacceso";
    }
    else if (results.value == 551505585) {
    stato = "kitt";
    }
    else if (results.value == 551519865) {
    stato = "spento";
    }
    else if (results.value == 551534655)  {
    stato = "velocità+1";
   
    }
    else if (results.value == 551502015) {
    stato = "velocità-1";
    };
   
    if(stato == "acceso1"){
    digitalWrite(2, HIGH);
    }
    else if (stato == "acceso2") {
    digitalWrite(3, HIGH);
    }
    else if (stato == "acceso3") {
    digitalWrite(4, HIGH);
    }
    else if (stato == "acceso4") {
    digitalWrite(5, HIGH);
    }
    else if (stato == "acceso5") {
    digitalWrite(6, HIGH);
    }
    else if (stato == "acceso6") {
    digitalWrite(7, HIGH);
    }
    else if (stato == "acceso7") {
    digitalWrite(8, HIGH);
    }
    else if (stato == "acceso8") {
    digitalWrite(9, HIGH);
    }
    else if (stato == "acceso9") {
    digitalWrite(10, HIGH);
    }
    else if (stato == "acceso10") {
    digitalWrite(11, HIGH);
    }
    else if (stato == "acceso11") {
    digitalWrite(12, HIGH);
    }
     
       else if (stato == "velocità+1") {
    timer++;
    }
    else if (stato == "velocità-1") {
    timer-=timer-1;
    }

    else if (stato == "mantieniacceso") {
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
    }
}else{
if ((statoC==1)&&(statoA==0)){
statoB=1-statoB;
delay(10);
}
statoA=statoC;
if(statoB==1){
for (count=2;count<13;count++)
    {
   digitalWrite(pinArray[count], HIGH);
   delay(timer);
   digitalWrite(pinArray[count + 1], HIGH);
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(timer*2);
  }
  for (count=13;count>2;count--) {
   digitalWrite(pinArray[count], HIGH);
   delay(timer);
   digitalWrite(pinArray[count - 1], HIGH);
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(timer*2);
  }
  }
}
if ((statoC==1)&&(statoA==1)){
statoB=0;
delay(10);
}
statoA=statoC;
if(statoB==0){
digitalWrite(pinArray[count], LOW);
}else{

   if (stato == "spento") {
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
    }   
   

   
    irrecv.resume(); // Receive the next value
  }
}

jacopo99

ho appena provato ma niente!
mi dice "IRrecv" doesn not name a type

jacopo99

ok sono riuscito a risolvere l'errore ma non funge lo stesso..
Ho copiato il resto del codice da sotto
Code: [Select]
String stato;
ma niente.
Mi dice semplicemente "Errore durante la compilazione" senza far riferimento a niente :smiley-roll-sweat: :smiley-roll-sweat: :smiley-eek-blue:

cece99

Hai fatto casini con le librerie?
(anche io ho 13 anni)
Ciao
C
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono<br />  sufficienti i data sheet dei microprocessori.

jacopo99

Ci avevo pensato anchio così le ho re-installate tutte... ma il risultato è quello

leo72


ok sono riuscito a risolvere l'errore ma non funge lo stesso..
Ho copiato il resto del codice da sotto
Code: [Select]
String stato;
ma niente.
Mi dice semplicemente "Errore durante la compilazione" senza far riferimento a niente :smiley-roll-sweat: :smiley-roll-sweat: :smiley-eek-blue:

A me il codice del reply #17 compila senza errori.

jacopo99

Allora forse è veramente un problema di libreria...
Potresti allora uploadare e mandarmi in PM il link per la IDE che usi e della libreria corretta.
Grazie

leo72

L'IDE è l'1.0.5 mentre la libreria IR che ho provato è quella che scarichi da qui:
https://github.com/shirriff/Arduino-IRremote

jacopo99

Ho provato a ri-scaricare tutto ed installare ma ancora niente.. non sò più cosa fare :smiley-eek-blue: :smiley-eek-blue: :smiley-roll-blue: :smiley-roll-blue:

Secondo voi qual'è il problema??

leo72

Dove hai messo la libreria IRremote? Come l'hai installata?

jacopo99

Io ho scaricato il file zip dal sito poi scompattata la cartella l'ho rinominata IRremote e messa in libraries di Arduino.

leo72

Sarebbe buona norma metterla nella cartella /Arduino/libraries oppure /sketchbook/libraries (a seconda del SO) per tenere separate le lib di terzi da quelle dell'IDE, ma non è questo il problema.

A te non carica la lib. Vediamo.... se clicchi sul menu sulla voce "File/Esempi" ti compare nell'elenco la voce "IRremote"? Se sì, mettendoci sopra il puntatore, ti compaiono gli esempi allegati alla libreria?

jacopo99

Si a me compaiono tutti gli esempi

Go Up