Picaxe 08M Programmierproblem! Bitte um hilfe.
Ich möchte einen alten Servo selbst steuern. Infos in einem anderen thema:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=16828
Die Steuerung rechts links klappt auch wunderbar, nur leider scheint irgendwo in meinem Prog ein fehler zu stecken, den ich nicht finde. Nach dem programmstart wird die Mittelstellung angefahren. das ist schonmal super. sobald dann aber das Programm in "loop" steckt, scheint es durchgehend nur noch auf IR Signale zu warten. Normal sollte es ja wieder zu "startloop" spriingen, wenn keine IR Signale Empfangen werden. Wie kann ich das beheben? Lenken ist so ja möglich, aber der Servo soll ja automatisch auf Mittelstellung fahren, wenn keine IR Signale mehr kommen.
Bin am Verzweifeln.
Zitat:
Programm:
symbol rechts = 1 `rechts ansteuerung ausgang 1 Pin 6
symbol links = 2 `links ansteuerung ausgang 2 Pin 5
symbol position = b0 `Speicherort Position
startloop:
goto mittelstellung
loop:
low rechts
low links
infrain2
if infra = 1 then lenkr
if infra = 2 then lenkl
goto startloop
lenkr:
readadc 4,b0 `lese den Analogwert in b0 (Aktuelle Position)
if b0 > 236 then goto loop
high rechts `rechts vollausschlag lenken
goto lenkr
lenkl:
readadc 4,b0 `lese den Analogwert in b0 (Aktuelle Position)
if b0 < 20 then goto loop
high links `links vollausschlag lenken
goto lenkl
`Auswertung der Servostellung
` 5V = rechts = 256 (in Auswertung rechts = sobald größer 236)
`2,6V = mitte = 133
` 0V = links = 0 (in Auswertung links = sobald kleiner 20)
mittelstellung:
for b1 = 1 to 20
pause 20
readadc 4,b0 `lese den Analogwert in b0 (Aktuelle Position)
if b0 > 162 then goto linksdrehen
if b0 < 150 then goto rechtsdrehen
next b1
goto loop
linksdrehen:
high links `links drehen
pause 20 `für 0,02sec
low links
goto mittelstellung
rechtsdrehen:
high rechts `rechts drehen
pause 20 `für 0,02sec
low rechts
goto mittelstellung
auch mit Interrupt funktioniert es leider nicht.
Hallo.
Wollte mich mal zurückmelden und Infos geben, was daraus geworden ist.
Also die IR Steuerung habe ich vorerst auf EIS gelegt.
Auch mit dem Interrupt funktioniert es nicht wie gewollt.
Der Interrupt wird zwar erkannt und auch ausgeführt, aber weitere IR Befehle werden trotz reaktivieren des Interrupts nicht ausgeführt!
Vermutlich liegt es daran, dass ich im Interrupt nicht nur einfach irgend einen Schaltbefehl ausführen muss, sondern in andere Programmteile springen muss (um die gewünschte Stellung anfahren zu können.
Somit gelangt das Programm nicht wieder zurück in dienInterruptrutine, und kommt auch nicht zu dem erwarteten "return" am Ende der Rutine.
Habe bestimmt 100 Mal umprogrammiert und getestet... nun habe ich es aufgegeben. Aber auf jeden Fall habe ich nun schonmal gelernt wie der Interrupt funktioniert!
Hierfür vielen Dank.
Meine Aktuelle Steuerung wird nun über ein altes Handy ausgeführt. Hierzu aber demnächst mehr unter "Vorstellung". (Und dasss funtzt auch schon super!!!!)
Grüße Mirco