Rgb Led e Arduino

Salve a tutti,
chiedo innanzitutto perdono se eventualmente avessi sbagliato categoria o avessi creato un topic futile (?), ma essendo nuovo devo ancora imparare a destreggiarmi in questo splendido forum.
Come un po tutti i neofiti sto tentando di fare qualcosina di semplice per iniziare con arduino, ora è il momento dell'RGB led. Purtroppo non riesco a far funzionare il tutto e vi prego di aiutarmi, questo è il codice:

int led = 11;
int leduno = 10;
int leddue = 9;

void setup() {
pinMode(led, OUTPUT);
pinMode(leduno, OUTPUT);
pinMode(leddue, OUTPUT);
}

void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
digitalWrite(leddue, HIGH);
delay(1000);
digitalWrite(leddue, LOW);
delay(1000);
digitalWrite(leduno, HIGH);
delay(1000);
digitalWrite(leduno, LOW);
delay(1000);
}

e ho collegato il pin 11 ad una resistenza di 300 ohm che passa poi ad un catodo, idem per i pin 10 e 9. L'anodo l'ho collegato direttamente alla GND di Arduino...dov' è l'errore? Vi prego aiutatemi sto impazzendo ahahahah

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Il codice DEVI racchiuderlo nei tag code. Vedi sezione 7 del regolamento, altrimenti parte del codice può essere non visibile.

Hai un led RGB ad anodo comune ?

Salve, stavo finendo di leggere il regolamento e di guardare gli altri link che mi ha dato.
Comunque si tratta di un led ad anodo comune infatti ha 4 piedini, dove il più lungo è l'anodo e gli altri sono i tre colori.
Riposto anche il codice nella maniera corretta:

int led = 11;
int leduno = 10;
int leddue = 9;

void setup() {                
  pinMode(led, OUTPUT);    
 pinMode(leduno, OUTPUT); 
 pinMode(leddue, OUTPUT);
}


void loop() {
  digitalWrite(led, HIGH);  
  delay(1000);          
  digitalWrite(led, LOW);  
  delay(1000);             
  digitalWrite(leddue, HIGH);  
  delay(1000);         
  digitalWrite(leddue, LOW);  
  delay(1000); 
  digitalWrite(leduno, HIGH); 
  delay(1000);     
  digitalWrite(leduno, LOW);
  delay(1000); 
}

P.s. adesso inizio a scrivere la mia presentazione scusatemi per non averlo ancora fatto :slight_smile:

Sull'anodo devi dare i 5V e non GND. Per fare come hai descritto tu il tuo circuito, devi usare una led RGB a catodo comune.

Si ma non riesco a capire perchè dando i 5V il led si illumina di vari colori compreso giallo, viola,... cioè dal codice che ho scritto mi aspetterei che si illumini prima di rosso, poi stia spento 1 secondo, per poi illuminarsi di verde, stare spento un'altro secondo e illuminarsi di blu, spegnersi un secondo e far ripartire il loop.

P.s. scusatemi se dico una cavolata ma così facendo non sto dando la 5V sia sull'anodo che sul catodo?

No, purtroppo stai usando la logica inversa a quello che vuoi fare. Il tuo led rgb lo stai facendo lavorare "al contrario".
Tu tu aspetti di accendere un colore alla volta, ma invece lui ha tutti i colori già accesi e ne stai spegnendo uno alla volta quando gli dai HIGH. Ripeto, è tutto al contrario.

Davvero grazie mille non riuscivo a saltarne fuori per quanto possa essere una cosa banale :slight_smile:

Hehe... due domeniche fa ho giocato anch'io con un led rgb simile al tuo.
Se vuoi farlo lavorare NON al contrario, mettici un ULN2803.
Segui questo schema che attenzione, è per ULN2003:

Se utilizzi un ULN2803 (come ho fatto io), i pin di ingresso (quelli che collegherai ad arduino) sono 1 - 2 - 3, i pin di uscita dove collegherai le resistenze sono rispettivamente 18 - 17 -16. GND lo colleghi al pin 9 (ATTENZIONE; NON AL PIN8 se utilizzi un uln2803!).
Ovviamente le resistenze vanno opportunamente calcolate in base all'alimentazione fornita, può essere anche 5V.
In questo modo inverti i segnali: quando il pin di arduino viene messo high, il pin di uscita del uln2803 va a gnd.

Io ho utilizzato questa soluzione semplicemente perché avevo già a casa gli uln2803.