hi TrainMen,
hast Du einen SRF02? Vielleicht kanns Du ja mir helfen es zu verstehen...
folgendes szenario:
der code - so wie er ist (den doppelaufruf habe ich entfernt, die initialisierung des/der Servos ist innerhalb der while-schleife). SRF02 ist an der multiIO angeschlossen, an den pins, die am nächsten an dem trapezförmigen ausschnitt sind.
1) nach dem flaschen ausschalten
2) einschalten mit S1, startbutton drücken - das programm läuft, im terminal wird die servopos hochgezählt, die vom SRF02 gemessene entfernung angezeigt, der servo dreht aber nicht...
3) starbutton drücken, also das programm stoppen...
4) ohne mit dem S1 aus- und einzuschalten den startbutton drücken - das programm läuft, im terminal wird die servopos hochgezählt, die vom SRF02 gemessene entfernung angezeigt, der servo dreht... Allerdings dreht er bei der rückstellung nicht nur bis zur festgelegten SERVO1_LT =230, sondern bis 50 (warum weiss ich auch nicht)...
Kannst Du den ablauf so bestätigen?
übrigens, wenn ich die zwei zeilen:
setServoPower(1); //doppelaufruf entfernt
initSERVO(SERVO1 | SERVO2 | SERVO3 ); //doppelaufruf entfernt
vor die while-schleife setze, ist der ablauf formal korrekt, am vorne beschriebenem szenario ändert sich aber nichts...
In beiden punkten gebe ich Dir uneingeschränkt recht...
Meines wissens nach stoppt die pause nach dem abschicken des messaufrufs an den SRF02 den weiteren ablauf des programms und lässt den ablauf nach der pause wieder zu - dann ist (hoffentlich) auch das messergebnis schon da... Mit stopwatches (mit der abfrage > xyz) habe ich so meine probleme - die kann bei xyz +1 und auch bei xyz + 10000 ms stattfinden...
tu ich doch...
Lesezeichen