Raspberry Pi Pico: Zufallszahl generieren
Normalerweise erwarten wir von einem Computer, dass die selbe Eingabe auch immer die selbe Ausgabe produziert. Das etwas zufällig in einem Computer passiert ist eigentlich nicht gewünscht. Deshalb ist er so konstruiert, dass sich alle Zustände in einem Computer vorhersagen oder berechnen lassen. So ein Computer ist also eine richtige Spaßbremse.
Was machen wir, wenn doch mal etwas zufälliges erzeugt werden soll? Dafür gibt es spezielle Funktionen, die so etwas wie Zufall erzeugen können.
Im folgenden Aufbau wollen wir eine von insgesamt 7 Leuchtdioden zufällig leuchten lassen.
Im folgenden Aufbau wird der Mikrocontroller Raspberry Pi Pico verwendet. Zum Einstieg und erste Versuche empfehlen sich Erste Schritte mit dem Raspberry Pi Pico und Programmieren mit MicroPython.
Aufbau und Bauteile
Hinweis: Beim Aufbauen der insgesamt 14 Bauteile wird es ziemlich eng auf dem Steckbrett zugehen. Es empfiehlt sich sehr umsichtig vorzugehen und zu prüfen, dass es keine ungewollten Verbindungen zwischen den GPIOs gibt.
- R1: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
- R2: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
- R3: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
- R4: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
- R5: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
- R6: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
- R7: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
- LED1: Leuchtdiode, rot, gelb oder grün
- LED2: Leuchtdiode, rot, gelb oder grün
- LED3: Leuchtdiode, rot, gelb oder grün
- LED4: Leuchtdiode, rot, gelb oder grün
- LED5: Leuchtdiode, rot, gelb oder grün
- LED6: Leuchtdiode, rot, gelb oder grün
- LED7: Leuchtdiode, rot, gelb oder grün
Schnell und einfach alle Bauteile zusammen bestellen
Programmcode
Im Programmcode werden 7 GPIOs in einem Array ("[ ]") ausgewählt und als Ausgang initialisiert, die mit Leuchtdioden beschaltet sind. In einer Funktion wird wird eine zufällige Zahl zwischen 0 und 6 erzeugt und die mit dieser Zahl initialisierte Leuchtdiode zum Leuchten gebracht. Diese Funktion wird am Ende des Programmcodes aufgerufen.
# Bibliotheken laden from machine import Pin from random import randint # GPIOs für die Anzeige des Zufalls auswählen GPIO = [19, 18, 17, 16, 13, 14, 15] leds = len(GPIO) led = [0] * leds # Initialisierung der GPIOs als Ausgang for i in range(leds): led[i] = Pin(GPIO[i], Pin.OUT, value=0) # Funktion def led_zufall(): # LEDs ausschalten for i in range(leds): led[i].off() # Zufallszahl erzeugen (zwischen 0 und 6) rand = randint(0, leds-1) # LED aktivieren print('LED:', rand) led[rand].on() led_zufall()
Wenn das Programm gestartet wurde und eine Leuchtdiode leuchtet, wird das Programm beendet. Wenn Du eine neue Zufallszahl haben möchtest, dann musst Du das Programm erneut starten.
Erweiterungen
- Eine sinnvolle Erweiterung wäre, wenn das Drücken eines Tasters das Programm erneut ausführt und eine andere Leuchtdiode zufällig leuchten würde.
- Der Programmcode ist so flexibel, dass sich die Anzahl der Zufallszahlen erhöhen und verringern lassen, in dem Du im Array GPIOs hinzufügst oder entfernst.
Programmcode mit Button
Hinweis: Geänderte, ersetzte bzw. hinzugefügte Zeilen sind fett markiert.
# Bibliotheken laden from machine import Pin from random import randint # GPIO für Button btn = Pin(20, Pin.IN, Pin.PULL_DOWN) # GPIOs für die Anzeige des Zufalls auswählen GPIO = [19, 18, 17, 16, 13, 14, 15] leds = len(GPIO) led = [0] * leds # Initialisierung der GPIOs als Ausgang for i in range(leds): led[i] = Pin(GPIO[i], Pin.OUT, value=0) # Funktion def led_zufall(pin): # LEDs ausschalten for i in range(leds): led[i].off() # Zufallszahl erzeugen (zwischen 0 und 6) rand = randint(0, leds-1) # LED aktivieren print('LED:', rand) led[rand].on() btn.irq(trigger=Pin.IRQ_FALLING, handler=led_zufall)
Darf es ein bisschen mehr sein?
Der Programmcode mit der Zufallszahl lässt sich leicht zu einem elektronischen Würfel umbauen. Ohne Schaltungsänderung gleich loslegen.
Highlights: Elektronik mit dem Raspberry Pi Pico
- Raspberry Pi Pico: Onboard-LED einschalten und ausschalten
- Raspberry Pi Pico: Taster-Zustand auswerten und mit einer LED anzeigen
- Raspberry Pi Pico: Elektronischer Würfel
- Raspberry Pi Pico: Temperatur-Messung und Temperatur anzeigen
Elektronik mit dem Raspberry Pi
Die Stärken des Raspberry Pi liegen klar in der Computer-Architektur mit typischen Computer-Schnittstellen und Möglichkeit zum Ausführen von Open-Source-Software für Linux.
Weitere verwandte Themen:
- Raspberry Pi Pico
- Raspberry Pi Pico: GPIO-Grundlagen
- Raspberry Pi Pico: GPIO-Eingang beschalten
- Raspberry Pi Pico: GPIO-Ausgang beschalten
- Elektronik mit dem Raspberry Pi Pico
Teilen:
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.
- LED: Einschalten, ausschalten, blinken und Helligkeit steuern
- Taster: Entprellen und Zustände anzeigen
- LED mit Taster einschalten und ausschalten
- Ampel- und Lauflicht-Steuerung
- Elektronischer Würfel
- Eigene Steuerungen programmieren
Online-Workshop: Programmieren mit dem Raspberry Pi Pico
Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)