Hallo
Oki, damit kann man was anfangen. Hier das orginale Programm:
Code:
#include <nibobee/iodefs.h>
#include <nibobee/led.h>
#include <nibobee/sens.h>
#include <nibobee/odometry.h>
int main() {
led_init();
odometry_init();
sens_init();
while(1==1) {
enable_interrupts();
if (sens_getLeft() || sens_getRight()) {
odometry_reset();
}
led_set(LED_L_YE, odometry_getLeft(0)>10);
led_set(LED_L_RD, odometry_getLeft(0)>20);
led_set(LED_R_RD, odometry_getRight(0)>20);
led_set(LED_R_YE, odometry_getRight(0)>10);
}
return 0;
}
(Aus der Programmieranleitung Seite 30: http://download.nicai-systems.com/ni...e_20120424.pdf)
In der Doku zur Library (http://doku.nibo-roboter.de/nibobeelib/) findet man in der Beschreibung zur Odometrie (http://doku.nibo-roboter.de/nibobeelib/odometry_8h.html) folgends:
int16_t odometry_getLeft ( uint8_t reset )
Liefert den Wert des linken Zählers zurück. Je nach Motorrichtung wird der Zähler hoch oder runter gezählt. Wenn
Parameter:
reset = 0 ist wird der Zählerstand beibehalten, ansonsten auf 0 zurückgesetzt.
Das bedeutet, wenn man den Wert mit Parameter 0 ausliest wird der Zählerstand nicht gelöscht, alle anderen Werte führen zur Löschung beim Auslesen.
Das beideseitige Zurücksetzen der Zählerstände geschied hier mit odometry_reset():
if (sens_getLeft() || sens_getRight()) {
odometry_reset();
}
Für einseitiges Zurücksetzen würde ich deshalb etwa folgenden Code verwenden:
if (sens_getLeft()) odometry_getLeft(1); // 1 steht für Zählerstand Löschen beim Auslesen
Gruß
mic
Lesezeichen