Tutorial_Python_GPIOZero Bladzijde 104
Alle codes (van proefjes) overzichtelijk op een rij
Staat het project er niet bij kijk dan hier
In dit hoofdstuk zullen we 3 potentiometers gebruiken om de helderheid van 3 LED’s van RGBLED te regelen om meerdere kleuren.
Project 9.1 Kleurrijk licht
In dit project worden 3 potentiometers gebruikt om de RGB LED aan te sturen en in principe is het hetzelfde als bij de Zacht licht. project.
Lees namelijk de spanningswaarde van de potentiometer af en converteer deze vervolgens naar PWM zoals gewend controle LED-helderheid.
Het verschil is dat het vorige zachtlichtproject slechts één LED nodig had terwijl dit project vereiste (1) RGB-LED’s.
Componentenlijst



Als het bovenstaande circuit niet werkt, probeer dan de volgende bedrading.

Python-code 9.1.1 KleurrijkSoftlight
Als u I2C niet heeft geconfigureerd, raadpleeg dan Configureer I2C en installeer Smbus. Als u dat wel heeft gedaan, ga dan verder.
Observeer eerst het projectresultaat en leer vervolgens in detail over de code.
Configureer I2C en installeer Smbus als u dat nog niet heeft gedaan klik dan hier voor uitleg.
Code
ColorfulSoftlight.py
#!/usr/bin/env python3
#############################################################################
# Filename : Softlight.py
# Description : Control RGBLED with Potentiometer
# Author : www.freenove.com
# modification: 2023/05/11
########################################################################
from gpiozero import RGBLED
import time
from ADCDevice import *
led = RGBLED(red=22, green=27, blue=17, active_high=False) # define the pins for R:GPIO22,G:GPIO27,B:GPIO17
#led = RGBLED(red="J8:15", green="J8:13", blue="J8:11") # according to BOARD Numbering define the pins for R:11,G:12,B:13
adc = ADCDevice() # Define an ADCDevice class object
def setup():
global adc
if(adc.detectI2C(0x48)): # Detect the pcf8591.
adc = PCF8591()
elif(adc.detectI2C(0x4b)): # Detect the ads7830
adc = ADS7830()
else:
print("No correct I2C address found, \n"
"Please use command 'i2cdetect -y 1' to check the I2C address! \n"
"Program Exit. \n");
exit(-1)
def loop():
while True:
value_Red = adc.analogRead(0) # read ADC value of 3 potentiometers
value_Green = adc.analogRead(1)
value_Blue = adc.analogRead(2)
led.red =value_Red/255 # map the read value of potentiometers into PWM value and output it
led.green =value_Green/255
led.blue =value_Blue/255
# print read ADC value
print ('ADC Value value_Red: %d ,\tvlue_Green: %d ,\tvalue_Blue: %d'%(value_Red,value_Green,value_Blue))
time.sleep(0.01)
def destroy():
adc.close()
led.close()
if __name__ == '__main__': # Program entrance
print ('Program is starting ... ')
setup()
try:
loop()
except KeyboardInterrupt: # Press ctrl-c to end the program.
destroy()
print("Ending program")
Nadat het programma is uitgevoerd, zal het afstellen van de potentiometer een uitlezing van de waarde opleveren potentiometerspanningswaarden in de terminal en de geconverteerde digitale inhoud.



