#!/usr/bin/python3 # import time import RPi.GPIO as GPIO GPIO.setwarnings(False) #import wiringpi2 as gpio GPIO.cleanup() #GPIO.setwarnings(False) #GPIO.setmode(GPIO.BOARD) ## Unterprogramme def ziffer(zahl): GPIO.setmode(GPIO.BOARD) tm = 0.00453 tm2 = tm/100 hz = 100 #p.stop(0) if zahl == 0: #24 pinnr = 24 print(str(zahl)+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) elif zahl == 1: #3 pinnr = 3 print(str(zahl)+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) elif zahl == 2: #5 pinnr = 5 print(str(zahl)+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) elif zahl == 3:#7 pinnr = 7 print(str(zahl)+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) elif zahl == 4: #11 pinnr = 11 print(str(zahl)+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) elif zahl == 5: #13 pinnr = 13 print(str(zahl)+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) elif zahl == 6:#15 pinnr = 15 print(str(zahl)+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) elif zahl == 7:#19 pinnr = 19 print(str(zahl)+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) elif zahl == 8:#21 pinnr = 21 print(str(zahl)+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) elif zahl == 9:#23 pinnr = 23 print(str(zahl)+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) #bei "10" leuchtet der Punkt elif zahl == 10:#26 pinnr = 26 print("."+" Pin #"+str(pinnr)) GPIO.setup(pinnr,GPIO.OUT) for dc in range(0,101,1): #Nur 1/5 der Anzeigezeit der anderen Ziffern #Punkt dient als Trenner Stunden/Minuten An = dc * tm2 /5 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) for dc in range(100,-1,-1): An = dc * tm2 Aus = tm - An GPIO.output(pinnr,GPIO.HIGH) time.sleep(An) GPIO.output(pinnr,GPIO.LOW) time.sleep(Aus) GPIO.output(pinnr,GPIO.LOW) else: print(str(zahl)+" ist nicht 0..10") # UP Glimmlampe. Jede Sekunde wechselt die Polarität (Nixie No.4) def glimmlampelinks() : GPIO.setmode(GPIO.BOARD) pinnrlinks = 31 pinnrrechts = 35 GPIO.setup(pinnrlinks,GPIO.OUT) GPIO.setup(pinnrrechts,GPIO.OUT) GPIO.output(pinnrlinks,GPIO.HIGH) #time.sleep(0.1) GPIO.output(pinnrrechts,GPIO.LOW) def glimmlamperechts() : GPIO.setmode(GPIO.BOARD) pinnrlinks = 31 pinnrrechts = 35 GPIO.setup(pinnrlinks,GPIO.OUT) GPIO.setup(pinnrrechts,GPIO.OUT) GPIO.output(pinnrlinks,GPIO.LOW) #time.sleep(0.1) GPIO.output(pinnrrechts,GPIO.HIGH) ## Hauptprogramm ### Initialisieren der Ausgänge und durchschalten 1-9,0,. #GPIO.setmode(GPIO.BOARD) GPIO.cleanup() print("Nixieuhr 6 Version 1. Migele 24.11.2021") print(" ") for anzeige in range(1,10): ziffer(anzeige) #time.sleep(0.25) ziffer(0) #time.sleep(0.25) ziffer(10) time.sleep(1) ### Start der Uhr print("Jetzt geht's los..") print(" ") while True: GPIO.setmode(GPIO.BOARD) t = time.time() g=time.localtime() stunden=g.tm_hour minuten=g.tm_min print(str(stunden)+":"+str(minuten)) ##Stunden-Block #Wandeln in String stunde = str(stunden) ##Schritt 1 - Zehner-Stunden herauslösen und zurück in Zahlenformat #Stunde dreistellig machen stunde = int(stunden) + 100 #"8" -> 108; "23" -> 123 stunden = str(stunde) #Zehnerstelle isolieren: 123 -> 2 stunde = int(stunden[1]) glimmlamperechts() ziffer(stunde) ##Schritt 2 - Einer-Stunde herauslösen und zurück in Zahlenformat #Einerstelle isolieren: 123 -> 3 stunde = int(stunden[2]) glimmlampelinks() ziffer(stunde) # kleine Pause zwischen Stunden und Minuten, Komma leuchtet #glimmlampelinks() #ziffer(10) minute = str(minuten) ##Schritt 3 - Zehner-Minuten herauslösen und zurück in Zahlenformat #Minuten dreistellig machen minute = int(minute) + 100 #"8" -> 108; "48" -> 148 minuten = str(minute) #"108" #Zehnerstelle isolieren: 148 -> 4 minute=int(minuten[1]) glimmlamperechts() ziffer(minute) ##Schritt 4 - Einer-Minuten herauslösen und zurück in Zahlenformat #Einerstelle isolieren: 148 -> 8 minute = int(minuten[2]) glimmlampelinks() ziffer(minute) print(" ") glimmlamperechts() time.sleep(1.023) #ziffer(10) glimmlampelinks() time.sleep(1) glimmlamperechts() #time.sleep(1) #glimmlamperechts() GPIO.cleanup()