Uhrzeit auf 7 Segment Anzeige, Frage

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
robiv8
User
Beiträge: 3
Registriert: Sonntag 16. Juli 2017, 22:56

Uhrzeit auf 7 Segment Anzeige, Frage

Beitragvon robiv8 » Sonntag 16. Juli 2017, 23:35

Hallo in die Runde,
Kurz zu mir: Bin weder Programmierer noch habe ich Ahnung von Python & Co
Experimentiere aber gerne :-)
Da ich mit meinem Problem nicht weiter komme und auch google mir keine Antwort gibt hoffe ich hier Hilfe zu bekommen.

Habe mir ein so eine Sieben Segment Anzeige gekauft und Erfolgreich angeschloßen. Über GitHub hab ich das Python module to drive LED Matrices & 7-segment displays (MAX7219) runtergeladen und es funktioniert Einwandfrei. https://github.com/rm-hull/luma.led_matrix
Da ich nur eine Uhrzeit haben will habe ich die sevensegment_demo.py auf meine Bedürfnisse gekürzt und es funktioniert.
Es gibt nur ein kleines Problem:
Im Code ist die Anzeigedauer festgelegt in
  1. clock(seg, seconds=10)
klar kann ich das erhöhen ergibt aber keinen sinn.
Was muss ich reinschreiben damit es beim Starten einfach Endlos läuft.

Danke schon mal im Voraus.
Robert

Und hier die Momentane Uhrzeit.py
Vielleicht kann man ja diese noch etwas entschlacken :-)

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Copyright (c) 2017 Richard Hull and contributors
  4.  
  5. import time
  6. from datetime import datetime
  7.  
  8. from luma.led_matrix.device import max7219
  9. from luma.core.interface.serial import spi, noop
  10. from luma.core.virtual import viewport, sevensegment
  11.  
  12. def clock(seg, seconds):
  13.  
  14. #    Display current time on device.
  15.     interval = 0.5
  16.     for i in range(int(seconds / interval)):
  17.         now = datetime.now()
  18.         seg.text = now.strftime("%H-%M-%S")
  19.  
  20.         # calculate blinking dot
  21.         if i % 2 == 0:
  22.             seg.text = now.strftime("%H-%M-%S")
  23.         else:
  24.             seg.text = now.strftime("%H %M %S")
  25.  
  26.         time.sleep(interval)
  27.  
  28. def main():
  29.     # create seven segment device
  30.     serial = spi(port=0, device=0, gpio=noop())
  31.     device = max7219(serial, cascaded=1)
  32.     seg = sevensegment(device)
  33.  
  34.  
  35.     # Digit futzing
  36.     clock(seg, seconds=1000)
  37.  
  38.  
  39. if __name__ == '__main__':
  40.     main()
Zuletzt geändert von Anonymous am Montag 17. Juli 2017, 00:18, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 6549
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Uhrzeit auf 7 Segment Anzeige, Frage

Beitragvon Sirius3 » Montag 17. Juli 2017, 06:39

@robiv8: wenn Du experimentieren willst, ist es vielleicht keine schlechte Idee, wenn Du programmieren lernst. Dabei wirst Du Nicht automatisch zum Programmierer, aber vielleicht zu einem besseren Experimentierer.

Wenn Du willst, dass etwas endlos läuft, nimm eine Endlosschleife:
  1. from itertools import cycle
  2.  
  3. def clock(seg):
  4.     interval = 0.5
  5.     for format in cycle(["%H-%M-%S", "%H %M %S"]):
  6.         now = datetime.now()
  7.         seg.text = now.strftime(format)
  8.         time.sleep(interval)
robiv8
User
Beiträge: 3
Registriert: Sonntag 16. Juli 2017, 22:56

Re: Uhrzeit auf 7 Segment Anzeige, Frage

Beitragvon robiv8 » Montag 17. Juli 2017, 15:37

Ich danke schon mal, ich teste das gleich Heute Abend mal.
robiv8
User
Beiträge: 3
Registriert: Sonntag 16. Juli 2017, 22:56

Re: Uhrzeit auf 7 Segment Anzeige, Frage

Beitragvon robiv8 » Montag 17. Juli 2017, 22:12

Danke vielmals!
Funktioniert einwandfrei. :)

Eine Frage hätte ich noch,
Ich hab das selbe Projekt noch mit einer LED Matrix (Python library interfacing LED matrix displays with the MAX7219 driver (using SPI))
Da will ich die selbe Uhrzeit anzeigen lassen aber die Sekunden sollen von Oben nach Unten einlaufen / Stehenbleiben / auslaufen!
Ist sowas möglich?
Soll ich da ein Neuen Thread aufmachen?

Danke
Robert

Hier der Fertige Code falls jemand Interesse hat:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Copyright (c) 2017 Richard Hull and contributors
  4.  
  5. import time
  6. from datetime import datetime
  7. from itertools import cycle
  8.  
  9. from luma.led_matrix.device import max7219
  10. from luma.core.interface.serial import spi, noop
  11. from luma.core.virtual import viewport, sevensegment
  12.  
  13. def clock(seg):
  14.  
  15.     interval = 0.5
  16.     for format in cycle(["%H-%M-%S", "%H %M %S"]):
  17.         now = datetime.now()
  18.         seg.text = now.strftime(format)
  19.         time.sleep(interval)
  20.  
  21. def main():
  22.     # create seven segment device
  23.     serial = spi(port=0, device=0, gpio=noop())
  24.     device = max7219(serial, cascaded=1)
  25.     seg = sevensegment(device)
  26.  
  27.     # Digit futzing
  28.     clock(seg)
  29.  
  30. if __name__ == '__main__':
  31.     main()
  32.  
Sirius3
User
Beiträge: 6549
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Uhrzeit auf 7 Segment Anzeige, Frage

Beitragvon Sirius3 » Dienstag 18. Juli 2017, 09:05

@robiv8: die Frage mit der LED-Matrix ist eine, wozu die Programmieren lernen mußt, und sie Dir dann selbst beantworten. Ein Forum ist nicht dazu da, fertige Lösungen für irgendwelchen Anwendungen zu präsentieren. Lerne Python, versuche Deine Anwendung umzusetzen und wenn Du konkrete Fragen hast, kannst Du gerne einen neuen Thread eröffnen.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder