Für solche Sachen haben Mikrocontoller einen oder sogar meist mehrere Timer. Diese können voneinader unabhängige Taktzyklen erzeugen, in denen die LEDs geschaltet werden. Das wird auch bei dem Fertigmodul so gemacht, da ist nämlich auch ein Mikrocontroller (PIC12C508A) drauf.
An welchen Controller hast du so gedacht?
In SMD-Bauweise könnte man das Modul auch noch auf die halbe Größe schrumpfen, wenn das nötig ist...
Und wenn der Controller nichts anders zu tun hat, würde es auch ohne Timer gehen:
Für jeden Kanal wird in der Hauptschleife eine Variable weitergezählt, und bei einem festgelegten Höchstwert wieder auf Null gesetzt. Und zwar mit einer Taktzeit, die deutlich über dem schnellsten Blinkrhythmus liegt.
Nun läuft zb einer der Zähler von 0 bis 5 durch:
0
1X
2
3X
4
5
Wenn die LED jetzt zwei mal für ein Zeitintervall an sein soll, dazwischen ein Intervall Pause, dann drei Intervalle Pause, muss sie in den mit X markierten Intervallen an sein.
Man fragt jetzt also für jeden Kanal ab, wo der Zähler gerade steht, und schaltet die Ausgänge entsprechend. Also im Beispiel: Bei 1 und 3 anschalten, bei 2 und 4 ausschalten, bei 0 und 5 nichts machen (Ausgang behält seinen Status).
Und wenn man das System jetzt auf mehrer Kanäle erweitert, sieht es zb so aus:
Code:
1 1X
2X 2
3 1X
4 2
1 1X
2X 2
3 1X
4 2
1 1X
2X 2
3 1X
4 2
Ein Kanal läuft von 1 bis 4, der andere nur von 1 bis 2. Macht zwei Blinktakte, die unabhängig voneinander parallel laufen.
In der Praxis würde man aber die Zähler etwas weiter und schneller laufen lassen, und die Ausgänge für mehrere Takte am Stück schalten, zb so:
Code:
0X
1X
2X
3
4
5
0X
1X
2X
3
4
5
0X
1X
2X
3
4
5
Damit kann man dann auch nen schnellen und nen langsamen Takt gleichzeitig erzeugen. Zb 1ms Zeit pro Durchlauf. Und dann ein Zähler bis 1000, LED an ab 500 und aus bei 0 für nen 500ms/500ms-Takt. Parallel dazu könnte ein Zähler bis 100 laufen, an bei 0 und aus bei 20 für nen 20ms/80ms Takt...
Lesezeichen