Werbung
Ok, das Problem ist offensichtlich gelöst. Aber bei die neue Lib sollte im Prinzip auch die Schwell-werten in die Datei myasuro.h angepasst werden.:
MY_ODO_LIGHT_VALUE_L
MY_ODO_DARK_VALUE_L
MY_ODO_LIGHT_VALUE_R
MY_ODO_DARK_VALUE_R
Und danach auch die Lib neu Compilieren. Nicht nur dein eigene Programm. Es könnte sein das es einige Schwarz/Weiß übergangen ich bemerkt hat.
Diese Wert ist die Strecke einer Tick Multipliziert mit 10000. Das Rad macht in einer Rundgang ein Weg von ungefähr 120mm. (Durchmesser * Pi) Mit ein Übertragung von 4,8 [EDIT: könnte auch 5 sein, muss mal nach zahlen] zwischen das letzte Zahnrad, und die kleine von die Encoderscheibe, kommt man auf 25 mm pro Encoderscheibe Rundgang. Dann durch 8 Teilen und das sollte in die Nähe von 3.125 mm/ Tick sein. Die Wert Sollte dann 312500 werden.
Aber man wurde es genauer bekommen wenn Asuro eine Strecke von 1 oder den Kompleten 10 Meter fahrt, und die Tick Anzahl aus den Globale Variabele Encoder zuruck sendet an dich.
Aber mit diesen Program können alle diesen Persönliche Werten bewertet werden:
https://www.roboternetz.de/community...asuro-h-selber
Danke ich probier das mit dem Testprogramm mal aus![]()
ich stehe gerade vor dem Problem, dass Asuro sich nach einigen malen Turn aufhängt:
Das Problem kommt immer nur vor, wenn eine andere Variable g_iRow der wert 7 annimmt. g_iRow wird auch benutzt um ein Array als Index anzusprechen.Code:int g_iTurnVal = 90; ... void MoveOn(void) { if(g_iFieldCounter % 7 == 0) { Turn(g_iTurnVal, 100); Go(FIELDSIZE, 100); g_iFieldCounter++; AnalyseField(); SerWrite("Turning: ", 9); PrintInt(g_iTurnVal); Turn(g_iTurnVal, 100); //HIER hängt er sich auf und dreht sich ununterbrochen SerWrite("Got It", 6); g_iTurnVal *= (-1); } Go(FIELDSIZE, 100); g_iFieldCounter++; }
g_iRow hat jedoch überhaupt nichts mit Turn(g_iTurnval, 100) zu tun, oder liege ich da falsch?
können Zugriffsverletzungen an anderen Stellen im Program dazu führen, dass Asuro bei Turn() "durchdreht"?
Ich bin ratlos
Habt ihr eine Idee?
Tiny ASURO Library: Thread und sf.net Seite
Ich wurde diese Werten g_iRow und g_iFieldCounter auch Zurück senden, damit du kontrollieren kannst was er genau an das Moment im Kopf hat. Könnte aber zu viel Daten werden mit 2400 B/sek.
Lesezeichen