Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
1.1.2 RGB LED
Einführung
In diesem Projekt werden wir eine RGB-LED steuern, um verschiedene Farben blinken zu lassen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
|---|---|
Schaltplan
Nachdem Sie die Pins von R, G und B mit einem strombegrenzenden Widerstand verbunden haben, schließen Sie sie jeweils an die GPIO17, GPIO18 und GPIO27 an. Der längste Pin (GND) der LED wird mit dem GND des Raspberry Pi verbunden. Wenn den drei Pins unterschiedliche PWM-Werte gegeben werden, zeigt die RGB-LED verschiedene Farben an.
T-Board Name |
physical |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO18 |
Pin 12 |
1 |
18 |
GPIO27 |
Pin 13 |
2 |
27 |
Experimentelle Verfahren
Schritt 1: Schaltung aufbauen.
Schritt 2: Die Code-Datei öffnen.
cd ~/raphael-kit/python
Schritt 3: Ausführen.
sudo python3 1.1.2_rgbLed.py
Nachdem der Code ausgeführt wurde, sehen Sie, dass RGB rot, grün, blau, gelb, pink und cyan anzeigt.
Code
Bemerkung
Sie können den untenstehenden Code Bearbeiten/Zurücksetzen/Kopieren/Ausführen/Stoppen. Doch bevor Sie dies tun, müssen Sie zum Quellcode-Pfad wie raphael-kit/python gehen. Nachdem Sie den Code modifiziert haben, können Sie ihn direkt ausführen, um das Ergebnis zu sehen.
import RPi.GPIO as GPIO
import time
# Set up a color table in Hexadecimal
COLOR = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF]
# Set pins' channels with dictionary
pins = {'Red':17, 'Green':18, 'Blue':27}
def setup():
global p_R, p_G, p_B
GPIO.setmode(GPIO.BCM)
# Set all LedPin's mode to output and initial level to High(3.3v)
for i in pins:
GPIO.setup(pins[i], GPIO.OUT, initial=GPIO.HIGH)
p_R = GPIO.PWM(pins['Red'], 2000)
p_G = GPIO.PWM(pins['Green'], 2000)
p_B = GPIO.PWM(pins['Blue'], 2000)
p_R.start(0)
p_G.start(0)
p_B.start(0)
# Define a MAP function for mapping values. Like from 0~255 to 0~100
def MAP(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
# Define a function to set up colors
def setColor(color):
# configures the three LEDs' luminance with the inputted color value.
R_val = (color & 0xFF0000) >> 16
G_val = (color & 0x00FF00) >> 8
B_val = (color & 0x0000FF) >> 0
# Map color value from 0~255 to 0~100
R_val = MAP(R_val, 0, 255, 0, 100)
G_val = MAP(G_val, 0, 255, 0, 100)
B_val = MAP(B_val, 0, 255, 0, 100)
# Change the colors
p_R.ChangeDutyCycle(R_val)
p_G.ChangeDutyCycle(G_val)
p_B.ChangeDutyCycle(B_val)
print ("color_msg: R_val = %s, G_val = %s, B_val = %s"%(R_val, G_val, B_val))
def main():
while True:
for color in COLOR:
setColor(color)# change the color of the RGB LED
time.sleep(0.5)
def destroy():
# Stop all pwm channel
p_R.stop()
p_G.stop()
p_B.stop()
# Release resource
GPIO.cleanup()
if __name__ == '__main__':
setup()
try:
main()
except KeyboardInterrupt:
destroy()
Code-Erklärung
p_R = GPIO.PWM(pins['Red'], 2000)
p_G = GPIO.PWM(pins['Green'], 2000)
p_B = GPIO.PWM(pins['Blue'], 2000)
p_R.start(0)
p_G.start(0)
p_B.start(0)
Rufen Sie die GPIO.PWM()-Funktion auf, um Rot, Grün und Blau als PWM-Pins zu definieren
und setzen Sie die Frequenz der PWM-Pins auf 2000Hz. Verwenden Sie dann die Start()
Funktion, um den anfänglichen Tastgrad auf null zu setzen.
def MAP(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
Definieren Sie eine MAP-Funktion zum Zuordnen von Werten. Zum Beispiel, x=50, in_min=0,
in_max=255, out_min=0, out_max=100. Nach der Zuordnung durch die MAP-Funktion,
gibt es (50-0) * (100-0)/(255-0) +0=19,6 zurück, was bedeutet, dass 50 im Bereich 0-255
19,6 im Bereich 0-100 entspricht.
def setColor(color):
R_val = (color & 0xFF0000) >> 16
G_val = (color & 0x00FF00) >> 8
B_val = (color & 0x0000FF) >> 0
Konfigurieren Sie die Helligkeit der drei LEDs mit dem eingegebenen Farbwert, weisen Sie die ersten zwei Werte des Hexadezimalwerts R_val zu, die mittleren zwei G_val und die letzten zwei Werte B_val. Zum Beispiel, wenn color=0xFF00FF ist, dann ist R_val=(0xFF00FF & 0xFF0000)>> 16 = 0xFF, G_val = 0x00, B_val=0xFF.
R_val = MAP(R_val, 0, 255, 0, 100)
G_val = MAP(G_val, 0, 255, 0, 100)
B_val = MAP(B_val, 0, 255, 0, 100)
Verwenden Sie die MAP-Funktion, um die R,G,B-Werte im Bereich 0~255 in den PWM-Tastgradbereich 0-100 zu übertragen.
p_R.ChangeDutyCycle(R_val)
p_G.ChangeDutyCycle(G_val)
p_B.ChangeDutyCycle(B_val)
Weisen Sie den zugeordneten Tastgradwert dem entsprechenden PWM-Kanal zu, um die Helligkeit zu ändern.
for color in COLOR:
setColor(color)
time.sleep(0.5)
Weisen Sie jedem Element in der COLOR-Liste die Farbe entsprechend zu und ändern
Sie die Farbe der RGB-LED über die setColor() Funktion.
Phänomen-Bild