Leistungstrenner


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Raspberry Pi steuert RGB-Dioden via PWM

In dem folgenden Versuch werden drei RGB-Dioden von Raspberry Pi angesteuert. Um die Farbenvielfalt der RGB-Dioden zu nutzen, werden sie mithilfe von PWM-Signalen gesteuert. Aus diesem Grund werden drei Pins des J8-Headers von Raspberry Pi als PWM-Ausgänge definiert.

RGB Dioden

RGB Dioden

Das Programm

Mit einfacher Benutzeroberfläche werden drei Schieberegler zur Verfügung gestellt. Jeder Schieberegler ist jeweils für einen Ausgang zuständig. Mit jedem Schieberegler wird der High-Anteil des zuständigen PWM-Signals eingestellt. Mit GPIO.PWM werden drei Pins (Nummer 33, 35 und 37) als PWM-Ausgänge definiert. Beim Betätigen eines Schiebers wird der entsprechende Wert geändert und dem zuständigen Ausgang zugeführt. In der ersten Ausführung des Programms erfolgen die Veränderungen manuell.
Das Programm:


# ----------------------------------------------------------
# Raspberry Pi, RGB-Dioden & PWM
# (manuell)
# Raspberry Pi 3B, Python 3
# ----------------------------------------------------------
from tkinter import*
import RPi.GPIO as GPIO
GPIO.setwarnings(False)

GPIO.setmode (GPIO.BOARD)
GPIO.setup(33, GPIO.OUT)
GPIO.setup(35, GPIO.OUT)
GPIO.setup(37, GPIO.OUT)

Master = Tk()
Breite = Master.winfo_screenwidth()
Höhe = Master.winfo_screenheight()
Master.geometry("%dx%d+0+0" % (Breite,Höhe))
Master.config (bg="grey")

class Schieberegler():
    def __init__ (self,Titel, Pin, X, Y):
        pwm = GPIO.PWM (Pin, 50)
        def LED_ein(val):
            pwm.start (int(val))
            
        self.regler = Scale (Master,
                             from_=0,
                             to=100,
                             orient=HORIZONTAL,
                             length=800,
                             width=30,
                             bg="grey",
                             bd=4,
                             font=("Arial", 20),
                             fg="white",
                             label=Titel,
                             sliderlength=50,
                             troughcolor="grey",
                             command=LED_ein)
        self.regler.place(x=X, y=Y)
    
Regler_Oben = Schieberegler("Rot in %", 33, 300,100)
Regler_Mitte = Schieberegler("Grün in %", 35, 300,250)
Regler_Unten = Schieberegler("Blau in %", 37, 300,400)

Master.mainloop()  
# ----------------------------------------------------------
        
Benutzeroberflaeche mit Regler manuell


Programm - Erweiterung

Mit dem Programm kann man jetzt manuell die Helligkeit der einzelnen Dioden bestimmen. Mit einer Erweiterung wird dem Programm eine Sequenz für einen automatischen Ablauf hinzugefügt. Mit einem Button "Automatik Start" wird ein Unterprogramm (Auto_Takt), das den prozentualen Anteil des High-Pegels jedes Kanals via Zufallszahl bestimmt, aufgerufen. Die neuen Werte werden mit der Option regler.set(Kanalx) an die bereits vorhandenen Schieberegler übergeben. Die Schieberegler passen daraufhin die Schieberpositionen entsprechend an und beeinflussen gleichzeitig die zuständigen PWM–Ausgänge.
Das Programm:

# ----------------------------------------------------------
# Raspberry Pi, RGB-Dioden & PWM
# (manuell und automatisch)
# Raspberry Pi 3B, Python 3
# ----------------------------------------------------------
from tkinter import*
import random
import RPi.GPIO as GPIO

GPIO.setwarnings(False)
GPIO.setmode (GPIO.BOARD)
GPIO.setup(33, GPIO.OUT)
GPIO.setup(35, GPIO.OUT)
GPIO.setup(37, GPIO.OUT)

Master = Tk()
Breite = Master.winfo_screenwidth()
Höhe = Master.winfo_screenheight()
Master.geometry("%dx%d+0+0" % (Breite,Höhe))
Master.config (bg="grey")

class Schieberegler():
    def __init__ (self,Titel, Pin, X, Y):
        pwm = GPIO.PWM (Pin, 50)
        def LED_ein(val):
            pwm.start (int(val))
            
        self.regler = Scale (Master,
                             from_=0,
                             to=100,
                             orient=HORIZONTAL,
                             length=800,
                             width=30,
                             bg="grey",
                             bd=4,
                             font=("Arial", 20),
                             fg="white",
                             label=Titel,
                             sliderlength=50,
                             troughcolor="grey",
                             command=LED_ein)
        self.regler.place(x=X, y=Y)

def Auto_Takt ():
    Kanal1 = random.randint (0,100)
    Kanal2 = random.randint (0,100)
    Kanal3 = random.randint (0,100)
    Regler_Oben.regler.set(Kanal1)
    Regler_Mitte.regler.set(Kanal2)
    Regler_Unten.regler.set(Kanal3)
    Master.after(500, Auto_Takt)
    
Automatik = Button (Master,
                    bg="yellow",
                    text="Automatik Start",
                    font=("Arial",20),
                    command=Auto_Takt)
Automatik.place (x=700, y=550, width=300, height=100)
    
Regler_Oben = Schieberegler("Kanal 1 in %", 33, 300,100)
Regler_Mitte = Schieberegler("Kanal 2 in %", 35, 300,250)
Regler_Unten = Schieberegler("Kanal 3 in %", 37, 300,400)

Master.mainloop()  
# ----------------------------------------------------------
        
Benutzeroberflaeche mit Regler Auto


Der Schaltplan

Die drei Raspberry Pi – Ausgänge (Pins 33, 35, 37) müssen insgesamt 6 Dioden mit Strom versorgen. Um die Ausgänge nicht allzu stark zu belasten, werden drei Optokoppler dazwischengeschaltet. Jeder Pin ist mit einer farbigen Diode jeder RGB-Diode verbunden. Um das Farbenspiel attraktiver zu gestalten, ist jeder Pin bei jeder RGB-Diode jeweils für andere Farbe zuständig. Pin 33 (Kanal 1) steuert bei D1 die rote Diode, bei D2 die blaue, bei D3 die grüne Diode an. Entsprechend werden auch die Kanäle 2 und 3 verschaltet.

Schaltplan

Schaltplan


Die Testschaltung

Raspberry Pi PWM Testschaltung



Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz