Stap 6: De verlichting Code
Deze pulserende waarden (op tijd en uit-tijd) worden genoemd een PWMs Duty Cycle, dus de Python-functie die we gebruiken zullen om RGB-waarden is '. 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)
Aangezien onze PWM is pulserende bij 100Hz, moeten wij een waarde tussen 0,0 en 100.0 voor de taakcyclus. 100.0 "de pin altijd hoog blijft, 0.0" wordt verstaan dat het blijft altijd laag. Zoals iedereen die gewerkt heeft met CSS weet, kleurwaarden worden vaak vertegenwoordigd door 6-cijferige Hex waarden. RGB-waarden om in te passen 6 cijfers van hex, elke kleur is eigenlijk ' 2 ^ 8 = 256' mogelijke keuzes (0-255). Dat gezegd hebbende, moeten we nu vinden van de proportionele waarde van onze gewenste RGB uit 100. Er is bijvoorbeeld een gegeven R-waarde van de 100 '(R/255.0) * 100'.
Dit deel verschilt vooral voor gemeenschappelijke anode en gemeenschappelijke kathode LEDs!
Als u van een gemeenschappelijke kathode gebruikmaakt (wat betekent dat de lange pin is aangesloten op de grond), moet u de code ' rVal = (R/255.0) * 100'. Echter, als u een gemeenschappelijke anode (5V gebruikt tot lange pin), net als ik, u zal moeten gebruiken ' rVal = 100 - (R/255.0) * 100'
rVal = (R/255.0)*100 # Common Cathode (Ground) rVal = 100 - (R/255.0)*100 # Common Anode (5V)
Denk aan het die deze manier, gemalen is laag, 5V is hoog. Als de lange pin grond gaat is, moet u de RGB-waarden te gaan hoog en geven de LED power. Als ik wil het licht rood, die ik wil Stuur een 'rVal' van 100.0. Als de lange pin is aangesloten op de 5V, ik ben effectief weerstand te bieden aan de huidige 5V door het versturen van de stromingen van de GPIO pinnen. Als ik wil het gemeenschappelijk anode licht om te laten zien van de rode, wil ik 'rVal' van 0.0 (geen weerstand op de huidige rode) en een 'gVal' en 'bVal' van 100.0 te weerstaan allebei van die kleur stromingen.