[risolto] Led RGB arcobaleno

allora sto cercando di creare l'arcobaleno ma non riesco a capire dove sbaglio, il codice me lo da giusto ma il led non si accende

grazie

Pietro

int redpin = 11;    //abbiniamo i pin ai colori
int greenpin = 9;      //da verificare con le specifiche 
int blupin = 10;      //del led RGB
int vel=50;         //la velocità di transazione
int passo=1;        //il passo del ciclo di incremento

void setup() {
pinMode(redpin, OUTPUT);
pinMode(greenpin, OUTPUT);
pinMode(blupin, OUTPUT);

}


void loop() {
  for (int L=0;L<256;L+passo) {  // iniziamo con il led rosso
analogWrite(redpin,L);
delay(vel);
}   
 for (int L=0;L<256;L+passo) {  // da rosso a verde
  analogWrite(redpin,255-L);
  analogWrite(greenpin,L);
 delay(vel);
} 

  for (int L=0;L<256;L+passo) {  // da verde a blu
  analogWrite(greenpin,255-L);
  analogWrite(blupin,L);
 delay(vel);
} 
for (int L=0;L<256;L+passo) {  // da rosso a verde
  analogWrite(blupin,255-L);
  analogWrite(redpin,L);
 delay(vel);
} 
}

ho risolto cambiando questo:

for (int L=0;L<256;L++)

funziona ma non come dico io

Pietro

ciao Pietro,il problema sta quì

void loop() {
  for (int L=0;L<256;L+passo) {  // iniziamo con il led rosso
analogWrite(redpin,L);
delay(vel);

nel ciclo for inizializzi la variabile int L =0; poi dici che deve essere minore di 256 (quindi 255) ; poi devi scrivere L=L+passo che si può scrivere anche L+=passo.
prova e dimmi :slight_smile:

iz2rpn:
ho risolto cambiando questo:

for (int L=0;L<256;L++)

funziona ma non come dico io

Pietro

in caso al posto di L+passo dovresti scrivere

L += passo

che è uguale a scrivere

L = L+passo

perchè tu vai ad assegnare un nuovo valore alla variabile ogni ciclo quindi deve essere un'assegnazione.
scrivere

L++

equivale a scrivere

L += 1

che è uguale a

L = L+1

quindi è un'assegnazione :stuck_out_tongue:

EDIT: preceduto :smiley:

http://www.ustream.tv/channel/iz2rpn in diretta

ora funziona con

L++
 for (int L=0;L<256;L+=passo) {  // iniziamo con il led rosso
analogWrite(redpin,L);
delay(vel);
}

ora funziona cosi grazie ma mi spiegate meglio perchè?

Funziona con L++ perchè L++ è la forma contratta di L=L+1 quindi l'unico errore che facevi era "L+passo" che dovevi cambiare con "L=L+passo" oppure "L+=passo" che si equivalgono :slight_smile:

strano che nn mi dava errore cmq ora ho capito grazie per l'aiuto

codice corretto per chi vuole cimentarsi:

int redpin = 11;    //abbiniamo i pin ai colori
int greenpin = 9;      //da verificare con le specifiche 
int blupin = 10;      //del led RGB
int vel=50;         //la velocità di transazione
int passo=1;  //il passo del ciclo di incremento


void setup() {
pinMode(redpin, OUTPUT);
pinMode(greenpin, OUTPUT);
pinMode(blupin, OUTPUT);

}


void loop() {
  for (int L=0;L<256;L+=passo) {  // iniziamo con il led rosso
analogWrite(redpin,L);
delay(vel);
}   
 for (int L=0;L<256;L+=passo) {  // da rosso a verde
  analogWrite(redpin,255-L);
  analogWrite(greenpin,L);
 delay(vel);
} 

  for (int L=0;L<256;L+=passo) {  // da verde a blu
  analogWrite(greenpin,255-L);
  analogWrite(blupin,L);
 delay(vel);
} 
for (int L=0;L<256;L+=passo) {  // da rosso a verde
  analogWrite(blupin,255-L);
  analogWrite(redpin,L);
 delay(vel);
} 
}

perchè in effetti non c'è niente di errato, le due variabili le conosce e conosce anche la somma di errato c'era solo la sintassi... cmq bel lavoro

toti94:
perchè in effetti non c'è niente di errato, le due variabili le conosce e conosce anche la somma di errato c'era solo la sintassi... cmq bel lavoro

Grazie ma ammetto che non è tutta farina del mio sacco sono un complesso di codici presi sia qui nel forum che nel libro dei primi passi, quindi un buon lavoro lo abbiamo fatto insieme :slight_smile:

tutto questo mi servirà per creare una lampada per la mia ragazza che gli è piaciuto questo componente, ma mi sa che me la faccio pure io sta lampada.

risultato finale :slight_smile:

Non parlare di farina che sono panettiere e mi ricordi in qualche modo che è quasi ora di andare a lavorare =(
Tornando a noi è bella l'idea di una lampada o di una specie di retro cornice di un quadro che illumina la parete :grin:

vi terrò aggiornati io sveglia per le 5 notte e ancora grazie :slight_smile: