Theodor-Heuss-Realschule
MINT

Home > MINT
Eine Digitaluhr mit gelöteter Schaltung
Eine Digitaluhr mit gelöteter Schaltung
Die Digitaluhr mit der Verkabelung über ein Steckbrett
Die Digitaluhr mit der Verkabelung über ein Steckbrett

Informatik mit dem Raspberry Pi

In den vergangenen Wochen haben sich die beiden Informatikkurse der Klassenstufe 8 auf der Basis schuleigener Unterrichtsskripte mit dem Erfassen von Umweltdaten, z. B. über Infrarotsensoren, und dem Ausgeben von Informationen, z. B. über Siebensegmentanzeigen oder Piezo-Summer befasst. Im folgenden sind beispielhaft Arbeitsergebnisse des Unterrichts dargestellt.
Unten finden Sie Beispiele für eine Alarmanlage und eine Digitaluhr.


Eine Digitaluhr

Das Python Programm wird benutzt um eine digitale Uhr darzustellen. Dies wird über das Multiplex- Verfahren geregelt und auf einer Vierer - 7 - Segmentanzeige dargestellt. Siebensegmentanzeigen werden z.B. genutzt fü
r Countdowns, als Uhr, als Anzeige bei Taschenrechnern usw. Sie wird mit 12 GPIO - Anschlüssen gesteuert, es gibt acht Widerstände mit je 220 Ohm, die sich unter der Anzeige befinden. (Jan)

Hier das Programm: import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
segments = {'a':11, 'b':15, 'c':16, 'd':7, 'e':13, 'f':18, 'g':12,'p':29}
for segment in "abcdefgp":
GPIO.setup(segments[segment], GPIO.OUT)
GPIO.output(segments[segment], 0) # Ausstellen
digits = [40, 38, 37, 36]
for digit in 40, 38, 37, 36:
GPIO.setup(digit, GPIO.OUT)
GPIO.output(digit, 1) # Anstellen
num = {' ':[],
'0':['a', 'b', 'c', 'd', 'e', 'f'],
'1':['b', 'c'],
'2':['a', 'b', 'd', 'e', 'g'],
'3':['a', 'b', 'c', 'd', 'g'],
'4':['b', 'c', 'f', 'g'],
'5':['a', 'c', 'd', 'f', 'g'],
'6':['a', 'c', 'd', 'e', 'f', 'g'],
'7':['a', 'b', 'c'],
'8':['a', 'b', 'c', 'd', 'e', 'f', 'g'],
'9':['a', 'b', 'c', 'd', 'f', 'g']}
def Punkt():
GPIO.output(29, 1)
GPIO.output(36, 1)
GPIO.output(37, 1)
GPIO.output(40, 1)
GPIO.output(38, 0)
time.sleep(0.0001)
GPIO.output(38, 1)
GPIO.output(29, 0)
time.sleep(0.0001)
try:
while True:
z = time.localtime()
h = z.tm_hour; m = z.tm_min;
a = h *100
b = a + m

n = b

s = str(n).rjust(4)
Punkt()
for digit in range(4):
GPIO.output(digits[digit], 0)

digitSegments = num[s[digit]]
for segment in digitSegments:
GPIO.output(segments[segment], 1)
time.sleep(0.0001)
GPIO.output(digits[digit], 1)
for segment in digitSegments:
GPIO.output(segments[segment], 0)
except KeyboardInterrupt:
GPIO.cleanup()