Show Posts
Pages: 1 2 [3]
31  International / Software / Re: Lampada RGB con Apple Remote on: May 03, 2013, 04:02:44 am
Buongiorno a tutti, con l'ultimo codice che ho postato in esecuzione, impostando la luminosità iniziale a 0, stavo notando che nei modo2 e modo3 la luminosità riesco ad aumentarla e diminuirla,
mentre negli altri modi (modo0 e modo1) no.
In aggiunta questi modo, se non porto la luminosità a 255 dai modo2 e modo3, impallano tutto fino al reset manuale.
Ovviamente ho impostato tutti i colori con lumi
allego sketch con modifiche
32  International / Software / Re: Lampada RGB con Apple Remote on: May 02, 2013, 05:07:29 pm
smiley-grin
si si ora a letto anche io
domani a mente fresca provo a far andare la luminosità
grazie mille dei consigli e buonanotte
33  International / Software / Re: Lampada RGB con Apple Remote on: May 02, 2013, 04:45:13 pm
smiley-grin
fatto e funzionante.

EDIT:
anche lo switch.

34  International / Software / Re: Lampada RGB con Apple Remote on: May 02, 2013, 04:30:40 pm
Ecco fatto  smiley-sweat
ci ho messo un pochino a capire ma alla fine ho sistemato con i tuoi suggerimenti
Code:
/*
                  PeenieLamp v0.7
 Lampada RGB con telecomando Apple
 
 Codici Apple Remote
 + 2011287595
 - 2011279403
 frw 2011238443
 play pause 2011242539
 ffw 2011291691
 menu 2011250731
 tenuti premuti 4294967295
 
 
 ° Play/Pause accende e spegne
 ° "+" e "-" regolano luminosità
 ° "<<" e ">>" Cambiano modalità
 ° "menu" luce bianca
 
 
 Modalità:
 modo0 - Bianco
 modo1 - Viola
 modo2 - Verde
 modo3 - Rosso
 modo4 -
 modo5 -
 
 ultima modifica 02-05-2012
 */


#include <IRremote.h>

const byte r1=3;         //pin dei colori
const byte g1=5;
const byte b1=6;
const byte r2=9;
const byte g2=10;
const byte b2=11;
int RECV_PIN=12;   // pin del ricevitore

int K_MAXMODI=3; //costante per i modi

///Costanti per codici ricevitore

const unsigned long Kpiu  = 2011287595;
const unsigned long Kmeno = 2011279403;
const unsigned long Krew  = 2011238443;
const unsigned long Kplay = 2011242539;
const unsigned long Kffw  = 2011291691;
const unsigned long Kmenu = 2011250731;

IRrecv irrecv(RECV_PIN);
decode_results results;

int PP = 0 ;      //conteggio di quanto volte è stato premuto "Play/Pausa"
int lumi = 255;   //luminosità iniziale
int modo = 0;     // inizio da modo 0
int passo=3;      //aumento per cambio colori
int vel=10;       //velocità cambio colori

///SETUP///

void setup()
{

  delay(1000);
  Serial.begin(9600);

  irrecv.enableIRIn();// attiva il ricevitore

  pinMode (r1,OUTPUT);
  pinMode (g1,OUTPUT);
  pinMode (b1,OUTPUT);
  pinMode (r2,OUTPUT);
  pinMode (g2,OUTPUT);
  pinMode (b2,OUTPUT);

  analogWrite (r1, 0);
  analogWrite (g1, 0);
  analogWrite (b1, 0);
  analogWrite (r2, 0);
  analogWrite (g2, 0);
  analogWrite (b2, 0);
}

///MODALITA'///

void modo0()
{
  if (PP==HIGH)
  {  
    analogWrite (r1, lumi);
    analogWrite (g1, lumi);
    analogWrite (b1, lumi);
    analogWrite (r2, lumi);
    analogWrite (g2, lumi);
    analogWrite (b2, lumi);
    Serial.print("Modo:");
    Serial.println(modo);
    Serial.print("lumi=");
    Serial.println(lumi);
    delay(500);
  }
  else{
    analogWrite (r1, 0);
    analogWrite (g1, 0);
    analogWrite (b1, 0);
    analogWrite (r2, 0);
    analogWrite (g2, 0);
    analogWrite (b2, 0);
  }


}


void modo1()  {

  if (PP==HIGH){
    analogWrite (r1, lumi);
    analogWrite (g1, 0);
    analogWrite (b1, lumi);
    analogWrite (r2, lumi);
    analogWrite (g2, 0);
    analogWrite (b2, lumi);
    Serial.print("Modo:");
    Serial.println(modo);
    Serial.print("lumi=");
    Serial.println(lumi);
    delay(500);
  }
  else{
    analogWrite (r1, 0);
    analogWrite (g1, 0);
    analogWrite (b1, 0);
    analogWrite (r2, 0);
    analogWrite (g2, 0);
    analogWrite (b2, 0);
  }
}



void modo2 () {
  if (PP==HIGH){
    analogWrite(r1,0);
    analogWrite(g1,255);
    analogWrite (b1,0);
    analogWrite(r2,0);
    analogWrite(g2,255);
    analogWrite (b2,0);
    Serial.print("Modo:");
    Serial.println(modo);
    Serial.print("lumi=");
    Serial.println(lumi);
    delay(500);
  }
  else{
    analogWrite (r1, 0);
    analogWrite (g1, 0);
    analogWrite (b1, 0);
    analogWrite (r2, 0);
    analogWrite (g2, 0);
    analogWrite (b2, 0);
  }
}
void modo3 (){
  if (PP==HIGH){
    analogWrite(r1,255);
    analogWrite(g1,0);
    analogWrite (b1,0);
    analogWrite(r2,255);
    analogWrite(g2,0);
    analogWrite (b2,0);
    Serial.print("Modo:");
    Serial.println(modo);
    Serial.print("lumi=");
    Serial.println(lumi);
    delay(500);
  }
  else{
    analogWrite (r1, 0);
    analogWrite (g1, 0);
    analogWrite (b1, 0);
    analogWrite (r2, 0);
    analogWrite (g2, 0);
    analogWrite (b2, 0);
  }
}

///MAIN LOOP///

void loop()  {

  if (irrecv.decode(&results)) {

    //play/pausa premuto
    if(results.value == Kplay) {
      if(PP==LOW){
        PP=HIGH;
        Serial.println("remote: PLAY ACCESO");
      }
      else  {
        PP=LOW;
        Serial.println("remote: PLAY SPENTO");
      }
    }

    //tasto + premuto
    if (results.value == Kpiu && lumi<255){
      lumi = lumi+15;
    }

    //tasto - premuto
    if (results.value == Kmeno && lumi>0){
      lumi=lumi -15;
    }

    // tasto << premuto
    if (results.value == Krew){
      modo = modo-1;

      if(modo<0) modo = K_MAXMODI;
    }

    // tasto>>premuto
    if (results.value==  Kffw){
      modo=modo+1;      // puoi anche scrivere:           modo++;

      if(modo>K_MAXMODI) modo=0;
    }


    irrecv.resume();

    switch (modo) {
    case 0:

      modo0();

      break;
    case 1:

      modo1();

      break;
    case 2 :

      modo2();

      break;
    case 3 :

      modo3();

    }
  }
}



Ora devo sistemare la questione luminosità smiley-grin
35  International / Software / Re: Lampada RGB con Apple Remote on: May 02, 2013, 03:45:31 pm
la modo0 per prima cosa verifica lo stato del tasto play
poi se è HIGH, cioè premuto, accende tutti i colori
altrimenti (else) li spegne

nello switch rimanda al modo0 se PP è premuto

con questo codice accende e spegne tutti i modox

Code:
/*
                  PeenieLamp v0.6
 Lampada RGB con telecomando Apple
 
 Codici Apple Remote
 + 2011287595
 - 2011279403
 frw 2011238443
 play pause 2011242539
 ffw 2011291691
 menu 2011250731
 tenuti premuti 4294967295
 
 
 ° Play/Pause accende e spegne
 ° "+" e "-" regolano luminosità
 ° "<<" e ">>" Cambiano modalità
 ° "menu" luce bianca
 
 
 Modalità:
 modo0 - Bianco
 modo1 - Viola
 modo2 - Verde
 modo3 - Rosso
 modo4 -
 modo5 -
 
 ultima modifica 02-05-2012
 */


#include <IRremote.h>

const byte r1=3;         //pin dei colori
const byte g1=5;
const byte b1=6;
const byte r2=9;
const byte g2=10;
const byte b2=11;
int RECV_PIN=12;   // pin del ricevitore

int K_MAXMODI=3; //costante per i modi

///Costanti per codici ricevitore

const unsigned long Kpiu  = 2011287595;
const unsigned long Kmeno = 2011279403;
const unsigned long Krew  = 2011238443;
const unsigned long Kplay = 2011242539;
const unsigned long Kffw  = 2011291691;
const unsigned long Kmenu = 2011250731;

IRrecv irrecv(RECV_PIN);
decode_results results;

int PP = 0 ;      //conteggio di quanto volte è stato premuto "Play/Pausa"
int lumi = 255;   //luminosità iniziale
int modo = 0;     // inizio da modo 0
int passo=3;      //aumento per cambio colori
int vel=10;       //velocità cambio colori

///SETUP///

void setup()
{

  delay(1000);
  Serial.begin(9600);

  irrecv.enableIRIn();// attiva il ricevitore

  pinMode (r1,OUTPUT);
  pinMode (g1,OUTPUT);
  pinMode (b1,OUTPUT);
  pinMode (r2,OUTPUT);
  pinMode (g2,OUTPUT);
  pinMode (b2,OUTPUT);

  analogWrite (r1, 0);
  analogWrite (g1, 0);
  analogWrite (b1, 0);
  analogWrite (r2, 0);
  analogWrite (g2, 0);
  analogWrite (b2, 0);
}

///MODALITA'///

void modo0()
{
  if (PP==HIGH)
  {  
    analogWrite (r1, lumi);
    analogWrite (g1, lumi);
    analogWrite (b1, lumi);
    analogWrite (r2, lumi);
    analogWrite (g2, lumi);
    analogWrite (b2, lumi);
    Serial.print("Modo:");
    Serial.println(modo);
    Serial.print("lumi=");
    Serial.println(lumi);
    delay(500);
  }

}


void modo1()  {

  analogWrite (r1, lumi);
  analogWrite (g1, 0);
  analogWrite (b1, lumi);
  analogWrite (r2, lumi);
  analogWrite (g2, 0);
  analogWrite (b2, lumi);
  Serial.print("Modo:");
  Serial.println(modo);
  Serial.print("lumi=");
  Serial.println(lumi);
  delay(500);

}



void modo2 () {

  analogWrite(r1,0);
  analogWrite(g1,255);
  analogWrite (b1,0);
  analogWrite(r2,0);
  analogWrite(g2,255);
  analogWrite (b2,0);
  Serial.print("Modo:");
  Serial.println(modo);
  Serial.print("lumi=");
  Serial.println(lumi);
  delay(500);

}
void modo3 (){
  analogWrite(r1,255);
  analogWrite(g1,0);
  analogWrite (b1,0);
  analogWrite(r2,255);
  analogWrite(g2,0);
  analogWrite (b2,0);
  Serial.print("Modo:");
  Serial.println(modo);
  Serial.print("lumi=");
  Serial.println(lumi);
  delay(500);
}

///MAIN LOOP///

void loop()  {

  if (irrecv.decode(&results)) {

    //play/pausa premuto
    if(results.value == Kplay) {
      if(PP==LOW){
        PP=HIGH;
        Serial.println("remote: PLAY ACCESO");
      }
      else  {
        PP=LOW;
        Serial.println("remote: PLAY SPENTO");
      }
    }

    //tasto + premuto
    if (results.value == Kpiu && lumi<255){
      lumi = lumi+15;
    }

    //tasto - premuto
    if (results.value == Kmeno && lumi>0){
      lumi=lumi -15;
    }

    // tasto << premuto
    if (results.value == Krew){
      modo = modo-1;

      if(modo<0) modo = K_MAXMODI;
    }

    // tasto>>premuto
    if (results.value==  Kffw){
      modo=modo+1;      // puoi anche scrivere:           modo++;

      if(modo>K_MAXMODI) modo=0;
    }


    irrecv.resume();

    switch (modo) {
    case 0:
      if (PP==HIGH){
        modo0();
      }
      else
      {
        analogWrite (r1, 0);
        analogWrite (g1, 0);
        analogWrite (b1, 0);
        analogWrite (r2, 0);
        analogWrite (g2, 0);
        analogWrite (b2, 0);

      }
      break;
    case 1:
      if(PP==HIGH){
        modo1();
      }
      else
      {
        analogWrite (r1, 0);
        analogWrite (g1, 0);
        analogWrite (b1, 0);
        analogWrite (r2, 0);
        analogWrite (g2, 0);
        analogWrite (b2, 0);

      }
      break;
    case 2 :
      if(PP==HIGH){
        modo2();
      }
      else
      {
        analogWrite (r1, 0);
        analogWrite (g1, 0);
        analogWrite (b1, 0);
        analogWrite (r2, 0);
        analogWrite (g2, 0);
        analogWrite (b2, 0);

      }
      break;
    case 3 :
      if(PP==HIGH){
        modo3();
      }
      else
      {
        analogWrite (r1, 0);
        analogWrite (g1, 0);
        analogWrite (b1, 0);
        analogWrite (r2, 0);
        analogWrite (g2, 0);
        analogWrite (b2, 0);

      }
    }
  }
}

36  International / Software / Re: Lampada RGB con Apple Remote on: May 02, 2013, 03:13:39 pm
Grandioso, così mi piace.
Si impara meglio, si allena il cervello a ragionare ed è molto più divertente smiley-grin:D:D

.....nello switch devo dirgli di spegnere, e così per tutti i colori giusto?
37  International / Software / Re: Lampada RGB con Apple Remote on: May 02, 2013, 02:46:55 pm
Con il primo sketch era l'unica cosa che funzionava  smiley-grin

ecco la nuova versione del codice
Code:
/*
                  PeenieLamp v0.4
 Lampada RGB con telecomando Apple
 
 Codici Apple Remote
 + 2011287595
- 2011279403
frw 2011238443
play pause 2011242539
ffw 2011291691
menu 2011250731
tenuti premuti 4294967295
 
 
 ° Play/Pause accende e spegne
 ° "+" e "-" regolano luminosità
 ° "<<" e ">>" Cambiano modalità
 ° "menu" luce bianca
 
 
 Modalità:
 modo0 - Bianco
 modo1 - Viola
 modo2 - Verde
 modo3 - Rosso
 modo4 -
 modo5 -
 
 ultima modifica 02-05-2012
 */


#include <IRremote.h>

const byte r1=3;         //pin dei colori
const byte g1=5;
const byte b1=6;
const byte r2=9;
const byte g2=10;
const byte b2=11;
int RECV_PIN=12;   // pin del ricevitore

int K_MAXMODI=3; //costante per i modi

            ///Costanti per codici ricevitore

const unsigned long Kpiu  = 2011287595;
const unsigned long Kmeno = 2011279403;
const unsigned long Krew  = 2011238443;
const unsigned long Kplay = 2011242539;
const unsigned long Kffw  = 2011291691;
const unsigned long Kmenu = 2011250731;

IRrecv irrecv(RECV_PIN);
decode_results results;

int PP = 0 ;      //conteggio di quanto volte è stato premuto "Play/Pausa"
int lumi = 255;   //luminosità iniziale
int modo = 0;     // inizio da modo 0
int passo=3;      //aumento per cambio colori
int vel=10;       //velocità cambio colori

///SETUP///

void setup()
{
 
delay(1000);
Serial.begin(9600);

  irrecv.enableIRIn();// attiva il ricevitore

  pinMode (r1,OUTPUT);
  pinMode (g1,OUTPUT);
  pinMode (b1,OUTPUT);
  pinMode (r2,OUTPUT);
  pinMode (g2,OUTPUT);
  pinMode (b2,OUTPUT);

  analogWrite (r1, lumi);
  analogWrite (g1, lumi);
  analogWrite (b1, lumi);
  analogWrite (r2, lumi);
  analogWrite (g2, lumi);
  analogWrite (b2, lumi);
}

///MODALITA'///

void modo0()
{ if (PP==HIGH)
  {   analogWrite (r1, lumi);
      analogWrite (g1, lumi);
      analogWrite (b1, lumi);
      analogWrite (r2, lumi);
      analogWrite (g2, lumi);
      analogWrite (b2, lumi);
      Serial.print("Modo 0: lumi="); Serial.println(lumi);
      delay(500);
  }
  else
  { analogWrite (r1, 0);
    analogWrite (g1, 0);
    analogWrite (b1, 0);
    analogWrite (r2, 0);
    analogWrite (g2, 0);
    analogWrite (b2, 0);
    Serial.print("Modo 0: spento");
  }
}


void modo1()  {
         
    analogWrite (r1, 255);
    analogWrite (g1, 0);
    analogWrite (b1, 255);
    analogWrite (r2, 255);
    analogWrite (g2, 0);
    analogWrite (b2, 255);
   
  }



void modo2 () {
 
    analogWrite(r1,0);
    analogWrite(g1,255);
    analogWrite (b1,0);
    analogWrite(r2,0);
    analogWrite(g2,255);
    analogWrite (b2,0);
   
}
void modo3 (){
  analogWrite(r1,255);
    analogWrite(g1,0);
    analogWrite (b1,0);
    analogWrite(r2,255);
    analogWrite(g2,0);
    analogWrite (b2,0);
}

///MAIN LOOP///

void loop()  {

  if (irrecv.decode(&results)) {

    //play/pausa premuto
    if(results.value == Kplay) {
      if(PP==LOW){
        PP=HIGH;
        Serial.println("remote: PLAY ACCESO");
      }
      else  {
        PP=LOW;
        Serial.println("remote: PLAY SPENTO");
      }
    }

    //tasto + premuto
    if (results.value == Kpiu && lumi<255){
       lumi = lumi+20;
    }

    //tasto - premuto
    if (results.value == Kmeno && lumi>0){
      lumi=lumi -20;
    }

    // tasto << premuto
    if (results.value == Krew){
      if(modo>K_MAXMODI) {
        modo = modo-1;
      }
      else{
        modo = K_MAXMODI;
      }
    }

    // tasto>>premuto
    if (results.value==  Kffw){
      if(modo< K_MAXMODI ){
        modo = modo +1;
      }
      else{
        modo = 0;
      }
    }
    irrecv.resume();
  }
  switch (modo) {
  case 0:
    if (PP==HIGH){
      modo0();
    }
     
    break;
  case 1:
    if(PP==HIGH){
      modo1();
    }
    break;
  case 2 :
    if(PP==HIGH){
      modo2();
    }
    break;
    case 3 :
    if(PP==HIGH){
      modo3();
    }
  }
}
38  International / Software / Re: Lampada RGB con Apple Remote on: May 02, 2013, 12:58:48 pm
Stavo pensando la stessa cosa, ora vedo di aggiungerli  smiley-grin
grazie per i suggerimenti

EDIT:
aggiunto ed in effetti nel monitor da spento, ma le luci non si spengono
39  International / Software / Re: Lampada RGB con Apple Remote on: May 02, 2013, 12:36:37 pm
in effetti hai ragione nel secondo sketch postato non c'è
Code:
analogWrite (r1, LOW);
  analogWrite (g1, LOW);
  analogWrite (b1, LOW);
  analogWrite (r2, LOW);
  analogWrite (g2, LOW);
  analogWrite (b2, LOW);
ma nell'IDE l'avevo messa
Code:
 analogWrite (r1, lumi);
  analogWrite (g1, lumi);
  analogWrite (b1, lumi);
  analogWrite (r2, lumi);
  analogWrite (g2, lumi);
  analogWrite (b2, lumi);

ecco il perchè della mia domanda, cmq la luminosità non funziona lo stesso

EDIT: aggiunto il monitor seriale, lumi comincia da 255 si abbassa di 20 come da sketch, arriva a 235 e poi si 'impalla' fino al reset manuale
quando ripremo play per spegnere, nel monitor seriale non mi scrive spento però smette di trasmettere il valore di lumi
40  International / Software / Re: Lampada RGB con Apple Remote on: May 02, 2013, 12:27:54 pm
anche con la modifica fatta non spegne

non capisco il discorso della luminosità (lumi), se io l'ho definita all'inizio, nel momento che la richiamo dovrebbe funzionare, o no? smiley-grin
chiedo 'lumi' smileysmileysmiley in merito

P.S.: scusate il pessimo gioco di parole smiley-grin
41  International / Software / Re: Lampada RGB con Apple Remote on: May 02, 2013, 11:24:14 am
Intanto per grazie per i consigli smiley che ho subito messo in pratica assegnando le costanti per i codici del ricevitore e per i pin dei colori.
Per quel che riguarda il modo0 credo di avere sistemato rimpicciolendo lo switch.
Per " si impalla" intendo che non riceve più nessun comando dal ricevitore e si blocca a luce bianca fissa fino al reset manuale del micro, dopo le modifiche al codice questo non succede più.
Ho anche provato a mettere solo due colori nei modo1 e modo2 togliendo i 'for' e i 'delay' come suggerito ed in effetti i colori funzionano.
Segue sketch modificato
Code:
/*
                  PeenieLamp v0.2
 Lampada RGB con telecomando Apple
 
 Codici Apple Remote
 + 2011287595
- 2011279403
frw 2011238443
play pause 2011242539
ffw 2011291691
menu 2011250731
tenuti premuti 4294967295
 
 
 ° Play/Pause accende e spegne
 ° "+" e "-" regolano luminosità
 ° "<<" e ">>" Cambiano modalità
 ° "menu" luce bianca
 
 
 Modalità:
 modo0 - Bianco
 modo1 - Viola
 modo2 - Verde
 modo3 - Rosso
 modo4 -
 modo5 -
 
 ultima modifica 02-05-2012
 */


#include <IRremote.h>

const byte r1=3;         //pin dei colori
const byte g1=5;
const byte b1=6;
const byte r2=9;
const byte g2=10;
const byte b2=11;
int RECV_PIN=12;   // pin del ricevitore

            ///Costanti per codici ricevitore

const unsigned long Kpiu  = 2011287595;
const unsigned long Kmeno = 2011279403;
const unsigned long Krew  = 2011238443;
const unsigned long Kplay = 2011242539;
const unsigned long Kffw  = 2011291691;
const unsigned long Kmenu = 2011250731;

IRrecv irrecv(RECV_PIN);
decode_results results;

int PP = 0 ;      //conteggio di quanto volte è stato premuto "Play/Pausa"
int lumi = 100;   //luminosità iniziale
int modo = 0;     // inizio da modo 0
int passo=3;      //aumento per cambio colori
int vel=10;       //velocità cambio colori

///SETUP///

void setup()
{

  irrecv.enableIRIn();// attiva il ricevitore

  pinMode (r1,OUTPUT);
  pinMode (g1,OUTPUT);
  pinMode (b1,OUTPUT);
  pinMode (r2,OUTPUT);
  pinMode (g2,OUTPUT);
  pinMode (b2,OUTPUT);

  analogWrite (r1, LOW);
  analogWrite (g1, LOW);
  analogWrite (b1, LOW);
  analogWrite (r2, LOW);
  analogWrite (g2, LOW);
  analogWrite (b2, LOW);
}

///MODALITA'///

void modo0(){
  analogWrite (r1, 255);
  analogWrite (g1, 255);
  analogWrite (b1, 255);
  analogWrite (r2, 255);
  analogWrite (g2, 255);
  analogWrite (b2, 255);
}


void modo1()  {
         
    analogWrite (r1, 255);
    analogWrite (g1, 0);
    analogWrite (b1, 255);
    analogWrite (r2, 255);
    analogWrite (g2, 0);
    analogWrite (b2, 255);
   
  }



void modo2 () {
 
    analogWrite(r1,0);
    analogWrite(g1,255);
    analogWrite (b1,0);
    analogWrite(r2,0);
    analogWrite(g2,255);
    analogWrite (b2,0);
   
}
void modo3 (){
  analogWrite(r1,255);
    analogWrite(g1,0);
    analogWrite (b1,0);
    analogWrite(r2,255);
    analogWrite(g2,0);
    analogWrite (b2,0);
}

///MAIN LOOP///

void loop()  {

  if (irrecv.decode(&results)) {

    //play/pausa premuto
    if(results.value == Kplay) {
      if(PP==LOW){
        PP=HIGH;
      }
      else  {
        PP=LOW;
      }
    }

    //tasto + premuto
    if (results.value == Kpiu && lumi<240){
      lumi=lumi +20;
    }

    //tasto - premuto
    if (results.value == Kmeno && lumi>0){
      lumi=lumi -20;
    }

    // tasto << premuto
    if (results.value == Krew){
      if(modo>0) {
        modo = modo-1;
      }
      else{
        modo = 3;
      }
    }

    // tasto>>premuto
    if (results.value==  Kffw){
      if(modo <3){
        modo = modo +1;
      }
      else{
        modo = 0;
      }
    }
    irrecv.resume();
  }
  switch (modo) {
  case 0:
    if (PP==HIGH){
      modo0();
    }
     
    break;
  case 1:
    if(PP==HIGH){
      modo1();
    }
    break;
  case 2 :
    if(PP==HIGH){
      modo2();
    }
    break;
    case 3 :
    if(PP==HIGH){
      modo3();
    }
  }
}


Ci sono delle cose che non capisco smiley :

con i tasti + e - non aumenta ne diminuisce la luminosita mentre prima lo faceva ma si "impallava" smiley dopo un paio di pressioni del tasto

con il tasto play che dovrebbe accendere/spegnere le luci , riesco solo ad accendere ma non a spegnere, mentre con lo sketch di prima riuscivo (era l'unica cosa che funzionava).





42  International / Software / Lampada RGB con Apple Remote on: May 02, 2013, 04:13:47 am
Buongiorno a tutti smiley
da buon utente neofita di Arduino (da circa un mese), mi sono messo in testa di farmi la classica lampada rgb telecomandata con Apple Remote.
Dopo varie letture e configurazioni suggerite ho optato per comandare le strip rgb(anodo comune) con 1 ULN2003 (allego schema Fritzing, per schemi con Eagle devo ancora capire smiley-grin).

Considerato che non mi piace avere la pappa pronta ho scritto un pò di codice che compila, ma non funziona come dovrebbe.
Il codice che allego non è completo delle funzionalità che vorrei per la lampada, ma per gestire meglio il tutto faccio delle prove in corso d'opera per verificarne il funzionamento e correggere eventuali errori.
Ecco lo sketch
Code:
/*
                  PeenieLamp v0.1
 Lampada RGB con telecomando Apple
 
 Codici Apple Remote
+         2011287595
-           2011279403
<<        2011238443
play pause 2011242539
>>                2011291691
menu 2011250731
tenuti premuti 4294967295
 
 
 ° Play/Pause accende e spegne
 ° "+" e "-" regolano luminosità
 ° "<<" e ">>" Cambiano modalità
 ° "menu" luce bianca
 
 
 Modalità:
 0 - luce bianca
 1 - Dissolvenza
 2 - Arcobaleno
 3 -
 4 -
 5 -
 
 ultima modifica 02-05-2012
 */


#include <IRremote.h>

int r1=3;         //pin dei colori
int g1=5;
int b1=6;
int r2=9;
int g2=10;
int b2=11;
int RECV_PIN=12;   // pin del ricevitore

IRrecv irrecv(RECV_PIN);
decode_results results;

int PP = 0 ;      //conteggio di quanto volte è stato premuto "Play/Pausa"
int lumi = 100;   //luminosità iniziale
int modo = 0;     // inizio da modo 0
int passo=3;      //aumento per cambio colori
int vel=10;       //velocità cambio colori

///SETUP///

void setup()
{

  irrecv.enableIRIn();// attiva il ricevitore

  pinMode (r1,OUTPUT);
  pinMode (g1,OUTPUT);
  pinMode (b1,OUTPUT);
  pinMode (r2,OUTPUT);
  pinMode (g2,OUTPUT);
  pinMode (b2,OUTPUT);

  analogWrite (r1, lumi);
  analogWrite (g1, lumi);
  analogWrite (b1, lumi);
  analogWrite (r2, lumi);
  analogWrite (g2, lumi);
  analogWrite (b2, lumi);
}

///MODALITA'///

void modo0(){
  analogWrite (r1, 255);
  analogWrite (g1, 255);
  analogWrite (b1, 255);
  analogWrite (r2, 255);
  analogWrite (g2, 255);
  analogWrite (b2, 255);
}


void modo1()  {
  for (int fadevalue=0; fadevalue<= lumi; fadevalue +=5){      
    analogWrite (r1, fadevalue);
    analogWrite (g1, fadevalue);
    analogWrite (b1, fadevalue);
    analogWrite (r2, fadevalue);
    analogWrite (g2, fadevalue);
    analogWrite (b2, fadevalue);
    delay(50);
  }
  for ( int fadevalue=lumi;fadevalue>=0; fadevalue -=5){
    analogWrite (r1, fadevalue);
    analogWrite (g1, fadevalue);
    analogWrite (b1, fadevalue);
    analogWrite (r2, fadevalue);
    analogWrite (g2, fadevalue);
    analogWrite (b2, fadevalue);
    delay(50);
  }
}


void modo2 () {
  for (int L=0;L<256;L+=passo) {
    analogWrite(r1,255-L);
    analogWrite(g1,L);
    delay(100);
  }

  for (int L=0;L<256;L+=passo) {
    analogWrite(g1,255-L);
    analogWrite(b1,L);
    delay(100);
  }

  for (int L=0;L<256;L+=passo) {
    analogWrite(b1,255-L);
    analogWrite(r1,L);
    delay(100);
  }
}


///MAIN LOOP///

void loop()  {

  if (irrecv.decode(&results)) {

    //play/pausa premuto
    if(results.value == 2011242539) {
      if(PP==LOW){
        PP=HIGH;
      }
      else  {
        PP=LOW;
      }
    }

    //tasto + premuto
    if (results.value ==2011287595 && lumi<240){
      lumi=lumi +20;
    }

    //tasto - premuto
    if (results.value == 2011279403 && lumi>0){
      lumi=lumi -20;
    }

    // tasto << premuto
    if (results.value==2011238443){
      if(modo>0) {
        modo =modo-1;
      }
      else{
        modo = 2;
      }
    }

    // tasto>>premuto
    if (results.value==  2011238443){
      if(modo <2){
        modo = modo +1;
      }
      else{
        modo = 0;
      }
    }
    irrecv.resume();
  }
  switch (modo) {
  case 0:
    if (PP==HIGH){
      analogWrite (r1, lumi);
      analogWrite (g1, lumi);
      analogWrite (b1, lumi);
      analogWrite (r2, lumi);
      analogWrite (g2, lumi);
      analogWrite (b2, lumi);
    }
    else {
      analogWrite (r1, 0);
      analogWrite (g1, 0);
      analogWrite (b1, 0);
      analogWrite (r2, 0);
      analogWrite (g2, 0);
      analogWrite (b2, 0);
    }
    break;
  case 1:
    if(PP==HIGH){
      modo1();
    }
    break;
  case 2 :
    if(PP==HIGH){
      modo2();
    }
    break;
  }
}

Il problema è che dopo aver premuto i tasti per la luminosità si impalla tutto il sistema, inoltre non riesco a gestire le varie modalità di accensione della lampada.
Sono sicuro di aver commesso un sacco di errori ed infatti vi chiedo aiuto e suggerimenti per l'avanzamento del mio progetto.
Avrei anche bisogno di qualche idea per giochi di luci da implementare nella lampada smiley-grin.
Insomma mi farebbe piacere completarla con il vostro aiuto e la vostra esperienza.

Andrea
43  International / Generale / Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! on: April 22, 2013, 03:09:18 am
Buongiorno a tutti smiley
sono Andrea classe 1975, appassionato del fai da te in generale, mi sto affacciando al mondo di Arduino da un mesetto circa con grande soddisfazione.
A presto

Andrea
Pages: 1 2 [3]