Folding@Home-Statistiken auf LED-Display anzeigen
Seite 2: Die Verkabelung
Wenn man sich die Module anschaut, sieht man, dass an einer Seite eine abgewinkelte Pinleiste bereits angelötet ist. Auf der anderen Seite könnte man eine solche Leiste, die mitgeliefert wird, selber festlöten. Danach könnte man die Displays über die ebenfalls mitgelieferten Kabel verbinden. Leider bekommt man mit dieser Methode keine zwei Displays nahtlos nebeneinander. Wenn man aber von einem Display die Pins vorsichtig nach unten umbiegt, kann man sie bei dem anderen Display von oben durch die Platine schieben und auf der Rückseite festlöten. Dazu kann man das letzte LED Modul einfach aus den Sockeln der Platine rausziehen. Aber Achtung:
Immer von allen Seiten gleichzeitig und vorsichtig hebeln, damit sich die Pins nicht verbiegen.
Merken Sie sich die Ausrichtung des LED Moduls, damit es danach wieder richtig herum aufgesteckt wird. Die seitlichen Beschriftungen aller LED Module zeigen in eine Richtung.
(Bild:Â Karl Pelzer)
Wenn alles passt, kann man zusätzlich die Platinen noch mit ein paar Tropfen Heißkleber fixieren, bevor man das LED-Modul wieder in den Sockel steckt. Fertig ist das extralange Display-Modul.
(Bild:Â Karl Pelzer)
| Display | Bezeichnung | Pin Raspi | Bezeichnung |
|
VCC |
+5V | 2 | 5V |
| GND | Masse | 6 | GND |
| DIN | Data In | 19 | GPIO 10 = MOSI |
| CS | Chip Select | 24 | GPIO 8 = SPI CE0 |
| CLK | Clock | 23 | GPIO 11 = SPI CLK |
Das Programm
Das Beispielprogramm fragt über die Folding@Home API die Statistiken für das eigene Donor-Konto ab und baut aus verschiedenen Inhalten des JSON-Dokuments einen String, der als Laufschrift auf den Displays ausgegeben wird. Denken Sie daran, in der URL ihr eigenes Donor-Konto einzutragen. Die Schritte sind im Programm dokumentiert. Das Programm können Sie nach Ihren Wünschen anpassen und verbessern.
# Programm zum Auslesen und Anzeigen von
# Folding@Home Statistiken auf 8x8 LED Arrays
# Autor Karl Pelzer 03/2020
import requests
import re
import time
import argparse
import locale
locale.setlocale(locale.LC_ALL, 'de_DE.utf-8')
from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.render import canvas
from luma.core.virtual import viewport
from luma.core.legacy import text, show_message
from luma.core.legacy.font import proportional, CP437_FONT, TINY_FONT, SINCLAIR_FONT, LCD_FONT
# SPI initiaisieren
serial = spi(port=0, device=0, gpio=noop())
# LED Matrix initialisieren
# cascaded ist die Anzahl der 8x8 Display Matrizen
# block_orientation ggfs. anpassen
device = max7219(serial, cascaded=8, block_orientation=-90,
rotate=0, blocks_arranged_in_reverse_order=False)
# 10 Schleifendurchl�ufe
i = 1
while i<=10:
msg = "Folding @ Home"
print(msg)
show_message(device, msg, fill="white", font=proportional(LCD_FONT))
# Abfrage der F@H Statistik f�r den Donor
r = requests.get('https://stats.foldingathome.org/api/donor/FamilieP')
donor = r.json()
print (donor)
print (r)
# die f�r die Ausgabe relevanten Felder extrahieren
last = donor["last"]
wus = donor["wus"]
rank = donor["rank"]
credit = donor["credit"]
name = donor["name"]
# die numerischen Felder in Strings mit 1000er Trennzeichen "." umwandeln
wusstr = str(locale.format_string('%d', wus, grouping=True))
rankstr = str(locale.format_string('%d', rank, grouping=True))
creditstr = str(locale.format_string('%d', credit, grouping=True))
# den String zur Ausgabe zusammenbauen
msg = name + " --- Letztes Update: " + last + " --- Work Units: " + wusstr + " --- Credits: " + creditstr + " --- Rank: " + rankstr
# F�r Debugging-Zwecke den Text einfach mal ausgeben
print(msg)
# ...und dann auf dem Display ausgeben
show_message(device, msg, fill="white", font=proportional(LCD_FONT))
print(i)
i += 1
Hier können Sie den Python-Code für das Folding@Home-Display runterladen. (rehu)