Hallo zusammen,
ich hab gerade einen kleinen Black-Out, sodass ich eure Hilfe für nen Gedankenanstoß brauch:
Es geht wieder um meine LED-Matrix.
Ich bin soweit, dass ich das Koordinatensystem nun richtig berechne und auch die laufenden Nummern dazu richtig habe. (Im Anhang ein Bild aus Excel, wie das Koordinatensystem aussieht).
Dann hab ich alle Zeichen, die ich anzeigen können will, in eine Datei geschrieben mit den LEDs, die dazu leuchten, bzw. nicht leuchten müssen und lese das in meine Klasse ein.
Beispiel für "A":
Jetzt will ich meinem Programm einen String übergeben, woraus er jedes einzelne Zeichen raus nimmt und dann auf das Koordinatensystem "legt". Dazu soll er die hinterlegten Zeichen durchgehen und dann schauen, welche LED an sein soll und die laufende Nummer aus dem Koordinatensystem suchen. In dem Array mit den laufenden Nummern wird dann hinterlegt, wie diese LED leuchten soll (oder auch nicht).
Folgenden Code hab ich dazu bereits:
import configparser
class Display:
def __init__(self):
self.__config = {}
self.__display = []
self.__leds = []
self.__chars = { 8 : {}, 16 : {} }
self.__char_size = 8
self.__position = [ 0, 0 ]
self.__text = [ [], [] ]
self.__readConfig()
self.__createDisplay()
self.__readChars()
#print(self.__config)
#print(self.__display)
#print(self.__leds)
#print(self.__chars)
def __readConfig(self):
config = configparser.ConfigParser()
config.read("config.ini")
self.__config["m_height"] = int(config["display"]["m_height"])
self.__config["m_width"] = int(config["display"]["m_width"])
self.__config["m_rows"] = int(config["display"]["m_rows"])
self.__config["m_cols"] = int(config["display"]["m_cols"])
def __createDisplay(self):
rows = self.__config["m_height"] * self.__config["m_rows"]
cols = self.__config["m_width"] * self.__config["m_cols"]
led_nr = 0
for i in range(0, rows):
self.__display.append([])
for e in range(0, cols):
self.__display[i].append([])
for a in range(0, self.__config["m_rows"]):
for b in range(0, self.__config["m_cols"]):
for c in range(0, self.__config["m_width"]):
for d in range(0, self.__config["m_height"]):
self.__display[a * self.__config["m_height"] + 7 - d][b * self.__config["m_width"] + c] = led_nr
self.__leds.append((a * self.__config["m_height"] + 7 - d, b * self.__config["m_width"] + c, 0, 0, 0))
led_nr += 1
def __readChars(self):
file8 = open("8_chars.ini", "r");
for line in file8:
if line[0] == "[":
char = line[1]
self.__chars[8][char] = []
else:
line = line.replace("\n", "")
self.__chars[8][char].append(line.split(", "))
#file16 = open("16_chars.ini", "r");
#
#for line in file16:
# if line[0] == "[":
# char = line[1]
#
# self.__chars[16][char] = []
# else:
# line = line.replace("\n", "")
# self.__chars[16][char].append(line.split(", "))
def writeText(self, line, text):
self.__text[line] = text
for char in text:
if char in self.__chars[self.__char_size]:
elif char == " ":
self.__position[line] += 3
display = Display()
display.writeText(1, "Hallo Welt")
Alles anzeigen
Kann mir jemand ne Idee nennen, wie ich das am besten umsetz?
Vielen Dank schon mal und
liebe Grüße
Fipsi