Raspberry PI Pico Projekt #1 – LED Würfel

In diesem Beitrag zum Raspberry PI Pico, möchte ich dir zeigen wie du dir einen kleinen LED Würfel bauen kannst.

Raspberry PI Pico - LED Würfel
Raspberry PI Pico – LED Würfel

Schaltung

Schaltung - LED Würfel am Raspberry PI Pico
Schaltung – LED Würfel am Raspberry PI Pico

Aufbau auf einer Lochrasterplatine

Das Projekt baue ich auf einer Lochrasterplatine auf. Du kannst das natürlich auch auf einer Streifenrasterplatine aufbauen jedoch musst du hier die Leiterbahnen unterbrechen und dieser Schritt entfällt bei einer Lochrasterplatine.

Für den Aufbau benötigst du folgende elektrische Bauteile:

* Die LEDs kaufe ich bei aliexpress.com im 100er Pack für knapp 1,5€ inkl. Versandkosten. 

** Die Buchsenleisten in 20 Pin sind recht teuer, du kannst dir auch welche in 40 Pin kaufen und diese mit einem Seitenschneider vorsichtig trennen. Jedoch gehen beim trennen min. eine Buchse kaputt d.h. du benötigst zwei 40 Pin Buchsenleisten.

elektrische Bauteile für den LED Würfel
elektrische Bauteile für den LED Würfel

Werkzeuge

Folgende Werkzeuge habe ich verwendet:

Die Werkzeuge benötigst zu bestimmt auch für andere Projekte daher lohnt es sich den ein oder anderen Euro mehr zu investieren um dann zbsp. einen vernünftigen Lötkolben zu haben welcher zuverlässig funktioniert!

Die Abbiegevorrichtung für Widerstände, bekommst du bei ebay.de für knapp 3,5€ zzgl. Versandkosten. Du kannst dir diese aber auch mit einem 3D Drucker selber drucken (3D Projekt auf Thingiverse.com).

3D gedruckte Abbiegevorrichtung für Widerstände
3D gedruckte Abbiegevorrichtung für Widerstände

Unter dem Abschnitt „Schaltung“ findest du auch die Belegung der LEDs und dem Taster zu GPIO Pins. 

Wie man eine (oder mehrere) LED am Raspberry PI Pico anschließt habe ich dir im Beitrag Raspberry PI Pico #2 – LEDs steuern erläutert. Und wie du einen Taster am auswertest findest du im Beitrag xyz.

Aufbau - LED Würfel mit Raspberry PI Pico
Aufbau – LED Würfel mit Raspberry PI Pico

Programm

Wie man am Raspberry PI eine LED an & aus schaltet habe ich dir bereits im Beitrag Raspberry PI Pico #2 – LEDs steuern erläutert. In unserem Programm verwenden wir 7 LEDs und zusätzlich einen Taster welcher über einen Pulldown Widerstand angeschlossen ist. Wie du einen Taster am Raspberry PI Pico anschließt und und auswertest habe ich dir im gelichnamigen Beitrag ausführlich erläutert Raspberry PI Pico #4 – Taster mit PullDown & PullUp abfragen.

importieren der benötigten Module

Wir benötigen lediglich zwei Module, zum einen „machine“ damit wir die GPIOs steuern können und das Modul „random“ damit wir eine Zufallszahl generieren können.

#wird benötigt um die GPIOs anzusteuern
from machine import Pin 
#benötigen wir um eine Zufallszahl zu generieren
import random

definieren der GPIOs

Damit wir später den Taster & die LEDs ansteuern können müssen wir uns ein paar Variablen anlegen mit „button“ & „led1“ bis „led7“. Der Taster wird als Eingangssignal definiert und die LEDs als Ausgangssignal.

#der Taster ist am GPIO 00 angeschlossen
button = Pin(0, Pin.IN)

#die LEDs sind auf dne GPIOs 01 bis 07
led1 = Pin(1, Pin.OUT)
led2 = Pin(2, Pin.OUT)
led3 = Pin(3, Pin.OUT)
led4 = Pin(4, Pin.OUT)
led5 = Pin(5, Pin.OUT)
led6 = Pin(6, Pin.OUT)
led7 = Pin(7, Pin.OUT)

Tupel mit Listen für die Augenzahlen am Würfel

Um später die Würfelaugen anzuzeigen erzeugen wir uns ein Tupel (eine Art Liste) mit den möglichen Augenzahlen. Der Vorteil ist dass, wir mit einer Schleife durch diese Liste iterieren können und so unser Code deutlich schlanker wird.

numbers = (
        [led4], #Zahl 1
        [led1, led7], #Zahl 2
        [led1, led4, led7], #Zahl 3
        [led1,led3, led5, led7], #Zahl4
        [led1, led3, led4, led5, led7], #Zahl 5
        [led1, led2, led3, led5, led6, led7]) #Zahl 6

zurücksetzen der LEDs

Bevor wir eine neue Zahl anzeigen können müssen wir erstmal alle LEDs zurücksetzen dazu dient die Funktion „resetLeds“.

In dieser Funktion setzen wir die Zustände der LEDs (value) auf 0 also LOW / AUS.

def resetLeds():
    led1.value(0)
    led2.value(0)
    led3.value(0)
    led4.value(0)
    led5.value(0)
    led6.value(0)
    led7.value(0)

anzeigen von Augenzahlen

Um die Augenzahl anzeigen zu lassen dient die Funktion „showNumber“. Dieser Funktion wird eine Liste mit GPIOs übergeben. In einer Schleife wird dann jeder GPIO aktiviert.

def showNumber(leds):
    resetLeds()
    for led in leds:
        led.value(1)

Tasterdruck auswerten

In einer Endlosschleife prüfen wir ob der Taster gedrückt wurde. Wenn dieser gedrückt wurde dann wird eine Zufallszahl zwischen 1 und 6 ermittelt. Da diese Zahl eine Gleitkommazahl ist runden wir diese. Diese ermittelte Zahl dient als Index zum zuvor definierten Tupel.

while True:
    if button.value():
        number = int(random.uniform(1,6))
        showNumber(numbers[number])

ACHTUNG: Ggf. kann unser Taster prellen, d.h. wenn wir einmal draufdrücken kann dieser beim loslassen zwei (oder sogar mehr) Signale senden. Hier müsste man mit einem kleinen Timer arbeiten , aber für den LED Würfel ist das völlig ausreichend.

das gesamte Programm

from machine import Pin
import random

button = Pin(0, Pin.IN)

led1 = Pin(1, Pin.OUT)
led2 = Pin(2, Pin.OUT)
led3 = Pin(3, Pin.OUT)
led4 = Pin(4, Pin.OUT)
led5 = Pin(5, Pin.OUT)
led6 = Pin(6, Pin.OUT)
led7 = Pin(7, Pin.OUT)

numbers = (
        [led4], #Zahl 1
        [led1, led7], #Zahl 2
        [led1, led4, led7], #Zahl 3
        [led1,led3, led5, led7], #Zahl4
        [led1, led3, led4, led5, led7], #Zahl 5
        [led1, led2, led3, led5, led6, led7]) #Zahl 6

def resetLeds():
    led1.value(0)
    led2.value(0)
    led3.value(0)
    led4.value(0)
    led5.value(0)
    led6.value(0)
    led7.value(0)

def showNumber(leds):
    resetLeds()
    for led in leds:
        led.value(1)

while True:
    if button.value():
        number = int(random.uniform(1,6))
        showNumber(numbers[number])
    

Hier nun das komplette Programm zum bequemen Download:

 

Video

Raspberry PI Pico - LED Würfel mit Taster
Dieses Video ansehen auf YouTube.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.