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.