9 Potentiometer en RGB-LED

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

Image

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.

Image
Img 20241206 111337
Scroll naar boven