Instructions

64
23. Tag
Heute im Adventskalender
•3 GPIO-Verbindungskabel
Das Anschlussschema der Sieben-Segment-Anzeige ist das gleiche wie an den vorherigen Tagen. Der Dezi-
malpunkt wird auch verwendet.
Zahlenraten mit drei Tasten
Das ein einfaches Ratespiel, in dem eine vom Computer zufällig
gewählte Zahl vom Spieler in möglichst wenigen Schritten erraten
werden soll. Die LEDs sind an den GPIO-Pins 24 und 23 angeschlos-
sen, die Taster an den GPIO-Pins 18, 17 und 4.
Bauteile: 1 Steckbrett SYB-46, 1 Sieben-Segment-Amzeige, 1 LED rot,
1 LED grün, 9 220-Ohm-Widerstände (rot-rot-braun), 3 Taster, 18
GPIO-Verbindungskabel, 3 Drahtbrücken (unterschiedliche Längen)
Die LEDs sind an den GPIO-Pins 23 und 24 angeschlossen, die Taster
an den Pins 18, 17 und 4.
Das Programm
Das Programm 23spiel.py generiert eine zufällige Zahl zwischen 0
und 100, die der Spieler mit möglichst wenigen Tipps erraten muss.
Mit zwei Tastern stellt der Spieler einen Tipp ein und gibt ihn mit dem
dritten Taster ab.
Die beiden linken Ziffern der Anzeige zeigen die getippte Zahl, die
beiden Ziffern rechts zeigen an, wie viele Versuche der Spieler bereits
hatte. Die beiden LEDs zeigen, ob die gesuchte Zahl kleiner oder grö-
ßer als der letzte Tipp ist.
Wie entstehen Zufallszahlen?
Gemeinhin denkt man, in einem Programm könne nichts zufällig
geschehen – wie also kann ein Programm dann in der Lage sein,
zufällige Zahlen zu generieren? Teilt man eine große Primzahl durch
irgendeinen Wert, ergeben sich ab der x-ten Nachkommastelle Zah-
len, die kaum noch vorhersehbar sind. Sie ändern sich auch ohne
jede Regelmäßigkeit, wenn man den Divisor regelmäßig erhöht.
Dieses Ergebnis ist zwar scheinbar zufällig, lässt sich aber durch
ein identisches Programm oder den mehrfachen Aufruf des gleichen
Programms jederzeit reproduzieren. Nimmt man aber eine aus eini-
gen dieser Ziffern zusammengebaute Zahl und teilt sie wiederum
durch eine Zahl, die sich aus der aktuellen Uhrzeitsekunde oder
dem Inhalt einer beliebigen Speicherstelle des Computers ergibt,
kommt ein Ergebnis heraus, das sich nicht reproduzieren lässt und
daher als Zufallszahl bezeichnet wird.
#!/usr/bin/python
import RPi.GPIO as GPIO
import time, random
GPIO.setmode(GPIO.BCM)
seg={'a':21, 'b':8, 'c':11, 'd':26, 'e':19, 'f':20, 'g':13}
for s in "abcdefg":
GPIO.setup(seg[s], GPIO.OUT, initial=0)
zif=[16, 12, 7, 6]
for z in zif:
GPIO.setup(z, GPIO.OUT, initial=1)
dp=5
GPIO.setup(dp, GPIO.OUT, initial=0)
Sieben-Segment-Anzeige, zwei LEDs und drei Tasten.
23. Tag