Raspberry Pi – RGB LED aansturen via GPIO (Python)
In dit voorbeeld gaan we een RGD LED aansturen via de GPIO pinnen van de Raspberry Pi met een python script.
Wat heb je nodig?
1) Python RPi.GPIO bibliotheek (standaard geïnstalleerd op de wheezy image)
Sluit de RGB LED aan met een weerstand volgens onderstaand schema:
1) GND > Weerstand> Kathode LED
2) GPIO17 > R van de RGB LED
3) GPIO27 > G van de RGB LED
4) GPIO22 > B van de RGB LED
Voorbeeld LED aan zetten met commandolijn:
rood1 = rood aan
rood0 =rood uit
groen1 = groen aan
groen0 = groen uit
blauw1 = blauw aan
blauw0 = blauw uit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#! /usr/bin/env python import RPi.GPIO as GPIO import sys # RGB LED pinnen configureren. pinRood = 17 pinGroen = 27 pinBlauw = 22 # GPIO setup. GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # Zet de GPIO pinnen als uitgang. GPIO.setup(pinRood, GPIO.OUT) GPIO.setup(pinGroen, GPIO.OUT) GPIO.setup(pinBlauw, GPIO.OUT) if len(sys.argv) > 1: commando = sys.argv[1] if commando == "rood1": GPIO.output(pinRood, 1) print "De rode LED is aan" if commando == "rood0": GPIO.output(pinRood, 0) print "De rode LED is uit" if commando == "groen1": GPIO.output(pinGroen, 1) print "De groene LED is aan" if commando == "groen0": GPIO.output(pinGroen, 0) print "De groene LED is uit" if commando == "blauw1": GPIO.output(pinBlauw, 1) print "De blauwe LED is aan" if commando == "blauw0": GPIO.output(pinBlauw, 0) print "De blauwe LED is uit" |
Om de rode LED aan te zetten, gebruik het script als volgtt: sudo python rgbled.py rood1
Hieronder is een voorbeeld om met PWM (Pusle Width Modulation) te werken, de waarden kunnen worden opgegeven op de commandolijn:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#! /usr/bin/env python import RPi.GPIO as GPIO import sys import time # RGB LED pinnen configureren. pinRood = 17 pinGroen = 27 pinBlauw = 22 # GPIO setup. GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # Zet de GPIO pinnen als uitgang. GPIO.setup(pinRood, GPIO.OUT) GPIO.setup(pinGroen, GPIO.OUT) GPIO.setup(pinBlauw, GPIO.OUT) # Gebruik PWM op de pinnen. ROOD = GPIO.PWM(pinRood, 1000) GROEN = GPIO.PWM(pinGroen, 1000) BLAUW = GPIO.PWM(pinBlauw, 1000) ROOD.start(0) GROEN.start(0) BLAUW.start(0) if len(sys.argv) > 3: # converteer de waarde 255 tot max 100 voor PWM. roodwaarde = (int(sys.argv[1]) * 100) / 255 groenwaarde = (int(sys.argv[2]) * 100) / 255 blauwwaarde = (int(sys.argv[3]) * 100) / 255 ROOD.ChangeDutyCycle(roodwaarde) GROEN.ChangeDutyCycle(groenwaarde) BLAUW.ChangeDutyCycle(blauwwaarde) time.sleep(3) ROOD.stop() GROEN.stop() BLAUW.stop() GPIO.cleanup() |
Om een kleurenix te maken, gebruik het script als volgtt: sudo python rgbkleur.py 0 255 200