Hallo
Ich bin dabei mit einem MC eínen DMX-Strobo zu bauen, welches über
einen Farbwechsler verfügt. Das funzt auch alles ganz Suuuper, nur hat
es noch einen kleinen Schönheitsfehler. An einem Schrittmotor (200
Schritte) ist eine Farbwalze mit 7 Farben und weiß angebracht. Es sind
also, um von einer auf die nächste Farbe zu gelangen 25 Schritte
notwendig. Leider macht mein Motor dies nur in eine Richtung. Also muß
ich manchmal 175 Schritte machen um die richtige Farbe anzufahren
obwohl 25 der kürzeste Weg ist. Darum nun meine Idee:
R_ichtung:
cp motorsoll,motorist ;wenn sollwert größer als
brsh G_rößer ;istwert gehe zu 'G_rößer
mov temp,motorist ;motorist soll nicht ge-
sub temp,motorsoll ;ändert werden
cpi temp,100 ;kürzesten Weg bestimmen
brlo L_inks ;ist kleiner 100 dann links
rjmp R_echts ;sonst rechts drehen
G_rößer:
mov temp,motorsoll ;motorsoll soll nicht ge-
sub temp,motorist ;ändert werden
cpi temp,100 ;kürzesten Weg bestimmen
brlo R_echts ;ist kleiner 100 dann rechts
L_inks: ;sonst links drehen
cbi PortD,RL ;Richtungsbit löschen
rjmp main
R_echts:
sbi PortD,RL ;Richtungsbit setzen
rjmp main
Die 'main-schleife' überprüft ob der DMX-wert ungleich der
Motorsoll-positon und kleiner 200 ist. Ist das der Fall wird der
DMX-wert in die Variable Motorsoll geschrieben und zur Adresse
'R_ichtung' gesprungen. Mich würde nun interessieren ob man das auch
einfacher lösen kann oder ob meine Lösung nicht schlecht ist?!? Im
AvrStudio hat es auf jedenfall gefunzt.
Danke schonmal im vorraus
Nico
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.