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 :)

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 :)

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 [u]che attenzione, è per ULN2003[/u]:

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.