Ich möchte die Ansteuerung einer LED Matrix mit Python simulieren und suche daher ein paar Tips, wie ich farbige Felder auf den Bildschirm zaubern kann.
http://www.mikrocontroller.net/articles/LED-Matrix
http://www.youtube.com/watch?v=scRxKSdn ... r_embedded
Das Multiplexing soll nach Möglichkeit auch nachvollzogen werden können (Timing etc. einstellen und dann durchsteppen).
Aber das ist dann ja mein Problem.
30 Hz sollten machbar sein.
Was nimmt man da? pyGame?
LED-Matrix Simulator
@whaeva: Also "farbige Felder" sollten sich mit jedem GUI-Toolkit auf den Bildschirm zaubern lassen. Inklusive PyGame oder auch Tkinter, wenn man nicht extra etwas installieren möchte.
Lass dich nicht davon abhalten, das ganze Ding zu machen ;-) Ich habe sowieso keine Zeit, da ist der Beschäftigungsdrang immer sehr groß..
Ich hätte nur gerne etwas, dass ich für die spätere Ansteuerung mit Mikrocontroller und in C schonmal etwas Animationen etc. ausprobieren kann.
Das Durchsteppen des Multiplexens wär' dann bloß gut, um das Timing zu sehen..
Importfunktion für Blinkenlights ist aber optional :-)
Ich hätte nur gerne etwas, dass ich für die spätere Ansteuerung mit Mikrocontroller und in C schonmal etwas Animationen etc. ausprobieren kann.
Das Durchsteppen des Multiplexens wär' dann bloß gut, um das Timing zu sehen..
Importfunktion für Blinkenlights ist aber optional :-)
da zu habe ich leider keine zeit.whaeva hat geschrieben:Lass dich nicht davon abhalten, das ganze Ding zu machen Ich habe sowieso keine Zeit, da ist der Beschäftigungsdrang immer sehr groß..
was ist das für ein blinkenlights projekt an dem du da arbeitest?
du bist nicht zufällig aus aachen?
http://www.kinderpornos.info
Hallo,
Gruß
Meinst Du das z.B. so ?ein paar Tips, wie ich farbige Felder auf den Bildschirm zaubern kann.
Code: Alles auswählen
#!/usr/bin/env python
import random
import Tkinter
# Screen resolution:
RESX = 800
RESY = 600
class ColoredBoxesWin:
def __init__(self):
self.mw = Tkinter.Tk()
self.mw.option_add("*font", ("Arial", 12, "normal"))
self.mw.title("Colored Boxes")
self.mw.geometry("+90+45")
self.cv = Tkinter.Canvas(self.mw,
bg = "white",
width = RESX,
height = RESY)
self.cv.pack()
speccicolors = ("black", "blue", "red", "magenta",
"green", "cyan", "yellow", "white")
for i in range(25, RESY - 50, 50):
for u in range(25, RESX - 50, 50):
c = random.randrange(len(speccicolors))
self.cv.create_rectangle(u, i, u + 45, i + 45,
outline = speccicolors[c],
fill = speccicolors[c])
self.btn = Tkinter.Button(self.mw,
text = "Ok",
command = self.mw.destroy)
self.btn.bind(sequence = "<Return>", func = self.bindFunc)
self.btn.focus()
self.btn.pack(side = Tkinter.RIGHT,
padx = 10,
pady = 10)
self.mw.mainloop()
def bindFunc(self, a):
self.mw.destroy()
if __name__ == "__main__":
app = ColoredBoxesWin()
@problembär: Statt `c` und `randrange()` hätte man etwas direkter eine Farbe mit `random.choice()` auswählen können.
Da sind eine Menge "magische" Zahlen in dem Programm. Die teilweise in einem direkten Zusammenhang mit den Konstanten `XRES` und `YRES` stehen, der aber fix ist, also wenn man eines von beidem ändert, muss man auch das andere anpassen.
`bindFunc()` ist kein sinnvoller Name für die Funktion. Das hätte ich an der Stelle wohl mit einer ``lambda``-Funktion erledigt.
Da sind eine Menge "magische" Zahlen in dem Programm. Die teilweise in einem direkten Zusammenhang mit den Konstanten `XRES` und `YRES` stehen, der aber fix ist, also wenn man eines von beidem ändert, muss man auch das andere anpassen.
`bindFunc()` ist kein sinnvoller Name für die Funktion. Das hätte ich an der Stelle wohl mit einer ``lambda``-Funktion erledigt.
Weitere Kritikpunkte:
- Komische Namen
- unübersichtliche Strukturierung
- Definition von Klassenattributen, die überhaupt nicht gebraucht werden
- und überhaupt: Muss/sollte man hier wirklich eine Klasse verwenden?
- Komische Namen
- unübersichtliche Strukturierung
- Definition von Klassenattributen, die überhaupt nicht gebraucht werden
- und überhaupt: Muss/sollte man hier wirklich eine Klasse verwenden?
Hallo whaeva,
hier eine kleine Demo mit Pygame.
http://paste.pocoo.org/show/127071/
Ich weiss nicht, ob ich das richtig verstanden habe: Soll pro Frame immer nur 1 Spalte angezeigt werden?
Wie auch immer, im Quelltext laesst sich das einstellen. (Interaktiv kann man bis jetzt noch nichts beeinflussen.)
Das Programm startet im Fullscreen-Modus und laesst sich mit ESC beenden.
yipyip
hier eine kleine Demo mit Pygame.
http://paste.pocoo.org/show/127071/
Ich weiss nicht, ob ich das richtig verstanden habe: Soll pro Frame immer nur 1 Spalte angezeigt werden?
Wie auch immer, im Quelltext laesst sich das einstellen. (Interaktiv kann man bis jetzt noch nichts beeinflussen.)
Das Programm startet im Fullscreen-Modus und laesst sich mit ESC beenden.
yipyip
Sehr schön!
Ich hoffe, ich finde in den nächsten Wochen etwas Zeit, dein Beispiel nachzuvollziehen und mich ein bisschen in PyGame einzuarbeiten.
Kannte ich noch nicht:
http://docs.python.org/library/itertools.html
Ich hoffe, ich finde in den nächsten Wochen etwas Zeit, dein Beispiel nachzuvollziehen und mich ein bisschen in PyGame einzuarbeiten.
Kannte ich noch nicht:
http://docs.python.org/library/itertools.html
ich habe im Internet mal etwas gefunden, was dir evtl. auch helfen könnte:
http://paste.pocoo.org/show/130922/
http://paste.pocoo.org/show/130922/