und trotzdem werde ich mir niemals so ein Ding kaufen für nur diesen einen Zweck! Ich werde bei meiner vorhandenen Hardware bleiben und eine sinnvolle, kostengünstige, kleine nicht übertriebene Lösung dafür finden.
Ich bin bereits bei dem Gedanken angekommen den Attiny als Software SPI Master arbeiten zu lassen!
Timer Overrun, PWM Pin High, Update Compare Register from Buffer, Interrupt -> Pull CLK high
Time Compare Match, PWM Pin Low, Interrupt -> SCLK auf low, Compare Buffer Register mit Wert in Abhängigkeit von MISO Pin laden, Sleep gehen und auf nächsten Overrun warten
Der Tiny zieht die Werte also aus dem Main Controller, der muss nur eine SPI Schnittstelle haben die schnell genug reagieren kann.
Die Anzahl der LEDs ermittle ich mit einer Feedbackleitung.
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Du darfst das ruhig ausführlicher erklären. Ich glaube nicht nur der Fragesteller hat den letzten Beitrag nicht verstanden.
Entschuldigung das war etwas unkontrolliert aus dem Kopf heraus geschrieben XD
Der Code wäre in der tat unheimlich simpel.
1 ATTiny mit
1 Timer mit einer Überlaufzeit 1/800kHZ , 2 Compare Outputs als Fast PWM
1ter PWM Output auf 50% und invertiert (der Pin simuliert unsere SCLK):
Immer wenn wir einen Überlauf vom Timer haben, wird die SCLK von der PWM Logik auf "low" gesetzt
Sobald der Compare Matchwert bei 50% Duty Cycle erreicht wird, wird SCLK auf "high" gesetzt und gleichzeitig ein Interrupt ausgeführt, welcher das Compare Register des 2ten PWM Output mit dem Timing für das Bit am MISO Eingang programmiert
Kurz vor dem Timer Überlauf wird dann der neue PWM Wert für den 2ten PWM Ausgang übernommen
Nach dem Update folgt der Überlauf und das Spiel geht von vorne los, bis alle LEDs mit Bits versorgt wurden, dann wird der Chipselect abgeschaltet und eine Pause gemacht damit die LEDs intern updaten.
Der Chipselect wird wieder eingeschalten, das erste Bit wird per Software eingelesen und der Timer neu gestartet.
Zum zählen der LEDs werden auf Knopfdruck einfach nur Nullen über den PWM geschoben und die Bits gezählt, bis von der letzen LED das erste Bit zurück kommt.
Leider blockieren in meinem Hirn gerade alle Programmierkenntnisse, vll. kann ich morgen mal einen brauchbaren Fetzen Code präsentieren
jetzt nur ganz grob, ohne Timer Werte für irgendwasCode:TCCR0A = \ (COM0A0 | COM0A1) | \ //Compare Output A low on Overrun/BOTTOM, high on Match (SCLK) (COM0B0) | \ //Compare B high on Overrun/BOTTOM, low on Match (WS2812 PWM) (WGM14); //WAveForm Mode 14: Fast PWM Count to TOP read from ICR0 ISR(TIM0_COMPA_vect) { if(PINB & PINB2){ TCCR0B = LONG_PULSE; } else { TCCR0B = SHORT_PULSE; } }![]()
PortB
Pin2 ist MISO
Pin 1 (Compare B) der PWM
Pin 0 (Compare A) ist SCLK
Geändert von Ceos (13.07.2016 um 15:21 Uhr)
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Vielleicht sollten wir auch noch mal zu den Basics zurückkehren.
Der Fragesteller hat sich noch nicht wieder gemeldet und wir wissen noch nicht, ob er sich für eine echte Matrix oder Streifen entscheidet.
Also was mir ehrlich gesagt an den fertigen Matrizen nicht gefällt, die sind einfach total klein oder die Abstände zwischen den LEDs sind zu gering. Ursprünglich wollte ich mir einen Couchtisch mit Matrix bauen, nur wohin ich den dann stelle ist die Frage. Also hab ich mich umentschieden und möchte nun eben einen Gameframe nachbauen, den ich an die Wand hängen kann und mit dem ich z.B. auch ein paar Ründchen Snake zocken kann
. Größe mindestens 20x20 cm. Auflösung 8x8 reicht glaube ich aus.
Ansonsten wollte ich noch darauf hinweisen, ich bin ein Anfänger, was Elektronik und Hardwarenahe Programmierung angeht^^. Das Projekt sollte mir auch dazu dienen, meine Kenntnisse zu erweitern und zu vertiefen.
Trotzdem mal aus reinem Interesse:
fertige Matrix vs. Streifen, was für Vorteile/Nachteile gibt es? Und wie funktionieren die beiden Möglichkeiten überhaupt? Wofür ist z.B. dieser Controller WS2812?
was die WS2812 angeht, die gibt es i.d.R. auch als einzel LEDs mit Trägerplatinchen und Stabbi Cs drauf, hab gerade 100 Stück für 44€ gefunden, bissl teuer aber Fair wenn man bedenkt dass es einzelne Platinchen sind![]()
Da sind dann 6 Lötaugen auf der Rückseite, 2xPlus 2xMinus 1xIn 1xOut, die kannst dann einfach in Reihe mit Draht verlöten.
Dann nimmst du eine dünne Sperrholzplatte, Bohrst dir deine Löcher für die LEDs und KLebst die Platinchen mit LED voran von unten auf die Löcher. Oben drauf packst du dann eine Glasplatte mit einer Diffusen Foiel oder Beschichtung drauf ... sieht bestimmt gut aus![]()
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Lesezeichen