Paso 6: El código de iluminación
Esos valores de pulsos (en tiempo y hora de apagado) se llaman un Sinuosidal Ciclo de deber, por lo que es la función de Python vamos a usar para establecer los valores RGB '. ChangeDutyCycle()'.
# Update the hue with R G B values def updateHue(R, G, B): rVal = 100 - (R/255.0)*100 # Will have to change these values depending on gVal = 100 - (G/255.0)*100 # on whether your LED has a common cathode or bVal = 100 - (B/255.0)*100 # common anode. This code is for common anode. print "rgb(%.2f, %.2f, %.2f)" % (rVal, gVal, bVal) RED.ChangeDutyCycle(rVal) GREEN.ChangeDutyCycle(gVal) BLUE.ChangeDutyCycle(bVal)
Puesto que nuestro PWM es pulsante de 100Hz, debemos dar es un valor entre 0.0 y 100.0 para su ciclo de trabajo. 100,0 que el pin permanece siempre alto, 0.0 significa siempre permanece baja. Como cualquiera que ha trabajado con CSS se sabe, los valores de color son a menudo representados por valores Hex de 6 dígitos. Para ajustar valores RGB a 6 dígitos del maleficio, cada color tiene en realidad 2 ^ 8 = 256' opciones posibles (0-255). Dicho esto, ahora tenemos que encontrar el valor proporcional de nuestro deseado RGB de 100. Por ejemplo, es un valor de R dado de 100 '(R/255.0) * 100'.
Esta parte es especialmente diferente de ánodo común y cátodo común LED!
Si está utilizando un cátodo común (es decir el pasador largo esté conectado a tierra), se debe usar el código ' rVal = (R/255.0) * 100'. Sin embargo, si usted está usando un ánodo común (5V al pin largo), como yo, usted necesitará utilizar ' rVal = 100 - (R/255.0) * 100'
rVal = (R/255.0)*100 # Common Cathode (Ground) rVal = 100 - (R/255.0)*100 # Common Anode (5V)
Creo que de la misma que manera, esta tierra es baja, 5V es alta. Si el pasador largo va a tierra, necesita los valores RGB para ir alta y darle el poder de LED. Si quiero que la luz roja, quiero enviar un 'rVal' de 100.0. Si el pasador largo está conectado a 5V, efectivamente estoy resistiendo 5V actual mediante el envío de las corrientes de los pines GPIO. Si quiero que la luz de ánodo común para mostrar rojo, quiero 'rVal' de 0.0 (no resistencia en el rojo actual) 'gVal' y 'bVal' de 100.0 a resistir tanto de las corrientes de color.