2011-11-05 22 views
9

Acabo de recibir un Arduino y estoy teniendo algunos problemas con las luces.Arduino Problemas de RGB LED

Creo que estoy usando un ánodo común, así que tengo los tres pines de color pasando por una resistencia de 270 ohmios a 10, 11 y 12 en el arduino. El último se engancha directamente a VSS.

Al igual que esta: http://www.instructables.com/id/RGB-LED-Tutorial-using-an-Arduino-RGBL/step2/Testing/

Ahora, se está trabajando de manera opuesta a lo que yo predecir. Cuando escribo analogWrite(red, 0), el led se ilumina en rojo, y 255 lo apaga por completo.

Ahora, ajustar el valor de 0-254 apenas ajusta el brillo en absoluto. 255 está completamente apagado después de que parpadea por un segundo.

¿Alguien puede explicar qué está pasando exactamente?

+1

Hm ... Pin 12 no es un pin PWM en mi Arduino. Entonces 'analogWrite' no funcionará como se espera para ese pin. –

Respuesta

9

Su LED es un ánodo común por lo que funciona exactamente al revés del cátodo común. Prueba esto:

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

AS A. H. señala, Pin 12 no es un PWM pin. Intenta cambiar tu código para usar los pines 9,10,11 en vez de 10,11,12 y dale otra oportunidad.

Aquí es una versión modificada de la muestra de la documentación para ilustrar la 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 
} 

en cuenta que necesita un sensor conectado al pin analógico 0 para cambiar los valores dirigidos.

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

Aquí no han alterado pines PWM anything.Just actualización