#! /usr/bin/python3

import RPi.GPIO as GPIO
import time
import datetime

GPIO.setmode(GPIO.BCM)

# Die ports für die 7 Segmente

seg={'a':11, 'b':7, 'c':15, 'd':17, 'e':22, 'f':8, 'g':10}
for i in "abcdefg":
    GPIO.setup(seg[i], GPIO.OUT, initial = True)

# Die ports für die 4 Ziffernblöcke

zif = [25, 24, 23, 14]
for i in zif:
    GPIO.setup(i, GPIO.OUT, initial = False)

# Das ist der Port für den Dezimalpunkt

dp = 18
GPIO.setup(dp, GPIO.OUT, initial = True)

zahl = ["abcdef", "bc", "abdeg", "abcdg", "bcfg", "acdfg", "acdefg", "abc", "abcdefg", "abcdfg"]

z = [0,0,0,0]

# Nach der zweiten Zahl (i == 1) soll der Dezimalpunkt eingeschaltet, sonst ausgeschaltet werden.
# False = EIN

def za():
    for i in range(4):
        for s in "abcdefg":
            GPIO.output(seg[s], True)
        GPIO.output(zif[i], True)
        for s in zahl[z[i]]:
            GPIO.output(seg[s], False)
        if i == 1:
            GPIO.output(dp, False)
        else:
            GPIO.output(dp, True)
        time.sleep(0.003)
        GPIO.output(zif[i], False)

# Hier soll die Zeit für die Anzeige ermittelt werden
# Auslesen aus dem System
# Zehner und Einerstelle berechnen
# erst wenn sich die Minute ändert, werden die neuen Ziffern erzeugt

try:
    while True:
        jetzt = datetime.datetime.now().strftime("%H%M")
        z = [int(n) for n in list(jetzt)]
        zeit = time.localtime()
        h = zeit.tm_hour
        m = zeit.tm_min
#        z[0] = int(h / 10)
#        z[1] = h % 10
#        z[2] = int(m / 10)
#        z[3] = m % 10
        while time.localtime().tm_min == m:
            za()

# Aus und Ende

except KeyboardInterrupt:
    GPIO.cleanup()