Leo C. schrieb:
> Ich kenne mich mit der Programmiersprache C und dem Atmel Studio aus,
> doch bei der Realisierung habe ich gerade null Schimmer...
Eine Propeller-Uhr lebt davon, dass während einer Umdrehung des
Propellers, bei der jeweils richtigen Winkelstellung die jeweilige LED
eingeschaltet und bei der nächsten Winkelstellung wieder ausgeschaltet
wird.
So wie ein Elektronenstrahl der von links nach rechts über einen
Bildschirm flitzt. Während er von links nach rechts flitzt, muss er zum
richtigen Zeitpunkt ein und gleich darauf wieder ausgeschaltet werden,
damit ein Punkt oder zumindest ein nicht allzusehr in die Länge
gezogener 'Bild-Punkt' an dieser Stelle entsteht (ok, im Fernseher liegt
da noch eine Lochmaske, die hilft, trotzdem bleibt diese Steuerung mit
der Position von ein und aus erhalten). Hier wird also über die Zeit
eine Position in Zeilenrichtung definiert. Dies geht deshalb, weil wir
ja wissen, wie lange der Strahl benötigt um von links nach rechts zu
flitzen. Damit ist also die verstrichene Zeit vom Zeitpunkt des
losflitzens an gemessen ein Mass für die Distanz vom linken Rand.
Die Winkelposition kennst du aber nicht direkt an der dein Propeller
steht. Aber du weißt, bzw. hast gemessen, wie lange eine Umdrehung
dauert. Hast du also zb 100ms für eine komplette Umdrehung gemessen und
willst du einen volle Umdrehung in 200 'Pixel' aufsplitten, dann muss
über die Zeit gerechnet werden. Du kennst den Zeitpunkt an dem der
Propeller in der 0-Position steht, Das Pixel 0 bedeutet dann, dass die
zugehörige LED vom Zeitpunkt 0 bis zum Zeitpunkt 1 * 100 / 200 leuchten
muss. Allgemeiner: Das Pixel n in einer vollen Umkreisung muss vom
Zeitpunkt n * 100 / 200 bis zum Zeitpunkt (n+1) * 100 / 200 leuchten
(oder nicht leuchten, je nachdem ob es eingeschaltet ist oder nicht)
Und damit setzt du dich jetzt erst mal auseinander, wie du diese
Zeitsteuerung machst. Hinweis: exakte Zeitsteuerungen bedeuten praktisch
immer den Einsatz eines Timers.
Erstes Zwischenziel: das rausmessen, wie lange eine Umdrehung dauert.