Ich möchte einen Servo so steuern, dass er auf Bewegungseinfluss von außen reagiert, indem er nachgibt. Es scheint aber noch an einer Division zu scheitern.
Ich habe den Servo am DA1 der Main Unit 2.0 und das Poti an AD1 angeschlossen. So kann ich die Position des Servos lesen und stelle den Servo immer wieder auf diesen Wert, so dass eine Drehung mit der Hand sofort zu gleichem Stellbefehl führt.
Der Positionswert beträgt 2 bis 151, die Stellbefehle betragen aber 0 bis 255 für denselben Bereich. Also muss ich den Positionswert mit (255/149) multiplizieren, um den richtigen Stellwert zu bekommen. Diese Division scheint aber immer 1 zu liefern.
Hier der komplette Code:
Code:' initialize AD port define AD1 ad[1] function readStepperPosition() return AD1 end function ' initialize Stepper define Stepper1 as da[1] Config.init Config.put 00000001b Config.off ' continuously set Stepper to AD value Lcd.init Lcd.clear define stepperCurrent as byte, AD1Current as byte do AD1Current = readStepperPosition() stepperCurrent = AD1Current*(255/149) Lcd.clear Lcd.pos 1, 1 Lcd.print "ad1cur: " & AD1Current Lcd.pos 2, 1 Lcd.print "stepperCur: " & stepperCurrent Stepper1 = stepperCurrent pause 50 loop







Zitieren

Lesezeichen