2011-11-05 16 views
9

Ho appena ricevuto un Arduino e ho problemi con le luci.Problemi con il LED di Arduino RGB

Credo di utilizzare un led anodo comune, quindi ho i tre pin colorati che passano attraverso una resistenza da 270 ohm a 10, 11 e 12 sull'arduino. L'ultimo è agganciato direttamente a VSS.

molto simile a questo: http://www.instructables.com/id/RGB-LED-Tutorial-using-an-Arduino-RGBL/step2/Testing/

Ora, si sta lavorando in modo opposto a quello che avrei prevedere. Quando scrivo analogWrite(red, 0), il led si illumina in rosso e 255 lo spegne completamente.

Ora, regolando il valore da 0-254 si regola a malapena la luminosità. 255 è completamente spento dopo che lampeggia per un secondo.

Qualcuno può spiegare cosa sta succedendo esattamente?

+1

Hm ... Pin 12 non è un perno PWM sul mio Arduino. Quindi 'analogWrite' non funzionerà come previsto per quel pin. –

risposta

9

Il LED è un anodo comune, quindi funziona esattamente l'opposto del comune catodo. Prova questo:

int PWM_value = xxx; 
analogWrite(red, 255 - PWM_value); 
3

AS A.H. sottolinea, pin 12 non è un PWM pin. Prova a cambiare il tuo codice per usare i pin 9,10,11 invece di 10,11,12 e dargli un altro colpo.

Ecco una versione modificata del campione di documentazione per illustrare l'idea:

int rPin = 9;  
int gPin = 10;  
int bPin = 11;  
int analogPin = 0; // potentiometer connected to analog pin 0 
int val = 0;   // variable to store the read value 

void setup() 
{ 
    pinMode(rPin, OUTPUT); // sets the pin as output 
    pinMode(gPin, OUTPUT); // sets the pin as output 
    pinMode(bPin, OUTPUT); // sets the pin as output 
} 

void loop() 
{ 
    val = analogRead(analogPin); // read the input pin 
    analogWrite(rPin, val/4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255 
    analogWrite(gPin, val/4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255 
    analogWrite(bPin, val/4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255 
} 

Nota che è necessario un sensore collegato al pin analogico 0 per modificare i valori led.

1
[http://arduino.cc/en/Reference/analogWrite][1] 

Qui non hanno alterato aggiornamento anything.Just PWM perni