IoT: DIY nyans ljus (6 / 9 steg)
Steg 6: Belysning koden
Dessa pulserande värden (i tid och off-tid) kallas en PWMs Duty Cycle, så funktionen Python kommer vi att använda ange RGB-värden är ". ChangeDutyCycle() ".
# Uppdatera nyans med R G B värden
def updateHue (R, G, B):
rVal = 100 - (R/255.0) * 100 # måste du ändra dessa värden beroende på
gVal = 100 - (G/255.0) * 100 # om din LED har en gemensam katod eller
bVal = 100 - (B/255.0) * 100 # gemensam anod. Detta är för gemensam anod.
skriva ut "rgb (%.2f, %.2f, %.2f)" % (rVal, gVal, bVal)
RÖD. ChangeDutyCycle(rVal)
GRÖN. ChangeDutyCycle(gVal)
BLÅ. ChangeDutyCycle(bVal)
Eftersom vår PWM pulserande vid 100Hz, måste vi ge den ett värde mellan 0,0 och 100,0 för dess Duty Cycle. 100,0 stiftet alltid stannar högt, 0,0 innebär det alltid förblir låga. Som alla som har arbetat med CSS vet, färgvärden representeras ofta av 6-siffriga Hex värden. Varje färg för att passa RGB-värden till 6 siffrorna i hex, faktiskt har ' 2 ^ 8 = 256' möjliga val (0-255). Som sagt, måste vi nu hitta proportionella värdet av vår önskade RGB av 100. Till exempel en viss R-värde av 100 är '(R/255.0) * 100".
Denna del är särskilt annorlunda för gemensam anod och gemensam katod lysdioder!
Om du använder en gemensam katod (betyder lång PIN-koden är ansluten till marken), bör du använda koden ' rVal = (R/255.0) * 100". Men om du använder en gemensam anod (5V till långa stift), som mig, som du kommer att behöva använda ' rVal = 100 - (R/255.0) * 100"
rVal = (R/255.0) * 100 # gemensam katod (mark)
rVal = 100 - (R/255.0) * 100 # gemensam anod (5V)
Tänk på det detta sätt, marken är låg, 5V är hög. Om den långa stiftet kommer marken, måste de RGB-värdena att gå höga och ge makt LED. Om jag vill ha ljust röd, jag vill skicka en "rVal" av 100,0. Om den långa stiftet är ansluten till 5V, jag effektivt motstånd mot den nuvarande 5V genom att skicka strömmar från GPIO stiften. Om jag vill ha gemensam anod ljuset att visa röda, vill jag "rVal" av 0,0 (inget motstånd på den nuvarande röda) och en "gVal" och "bVal" av 100,0 att stå emot båda dessa färg strömmar.