Hallo,
Bei meinem NIBOburger waren die vier Abstandssensoren unterschiedlich empfindlich. Dies wird durch ein unterschiedliches 0-Punktoffset verursacht. Den nachfolgenden Code habe ich im Programm first.c in der Funktion loop_test() getestet. Ab einem Wandabstand von 20 cm beginnen die LEDs zu blinken. Die Empfindlichkeit ist jetzt bei allen vier Sensoren gleich.
uint8_t l_min = 255;
uint8_t ll_min = 255;
uint8_t r_min = 255;
uint8_t rr_min = 255;
.
.
void loop_test1() {
.
.
if (progmode) {
uint8_t bl = analog_getValueExt(ANALOG_BL, 2)>25;
uint8_t br = analog_getValueExt(ANALOG_BR, 2)>25;
uint8_t bc = analog_getValueExt(ANALOG_BC, 2)>25;
led_set(1, bl);
led_set(2, bc);
led_set(3, bc);
led_set(4, br);
} else {
uint8_t l = analog_getValueExt(ANALOG_FL, 2);
while (!analog_has_update()); // Warten bis die Messung beendet
if (l < l_min) l_min = l; // Offset bestimmen
l -=l_min; // Offset abziehen
l = l > 5; // Hindernis erkennen
uint8_t r = analog_getValueExt(ANALOG_FR, 2);
while (!analog_has_update());
if (r < r_min) r_min = r;
r -=r_min;
r = r > 5;
uint8_t ll = analog_getValueExt(ANALOG_FLL, 2);
while (!analog_has_update());
if (ll < ll_min) ll_min = ll;
ll -=ll_min;
ll = ll > 5;
uint8_t rr = analog_getValueExt(ANALOG_FRR, 2);
while (!analog_has_update());
if (rr < rr_min) rr_min = rr;
rr -=rr_min;
rr = rr > 5;
led_set(1, ll);
led_set(2, l);
led_set(3, r);
led_set(4, rr);
}
}
Viele Grüße, Georg