Ich habe gerade ein Testprogramm für die Liniensensoren geschrieben. Mit dem Programm lassen sich alle drei Liniensensoren nach der Kalibrierung einzeln testen:
Durch Berührung der Fühler kann man zwischen den Sensoren wechseln. Die Anzahl der leuchtenden Leds gibt den Reflexionswert an

Code:
#include <nibobee/iodefs.h>
#include <nibobee/delay.h>
#include <nibobee/led.h>
#include <nibobee/sens.h>
#include <nibobee/analog.h>
#include <nibobee/line.h>

void line_read_persistent();
uint16_t line_get(uint8_t idx);
void line_calibrate_white();
void line_calibrate_black();

void do_blink(uint8_t mask) {
  for (int i=0; i<5; ++i) {
    led_set(LED_L_YE, mask&0x01);
    led_set(LED_L_RD, mask&0x02);
    led_set(LED_R_RD, mask&0x04);
    led_set(LED_R_YE, mask&0x08);
    delay(200);
    led_set(LED_L_RD, 0);
    led_set(LED_R_RD, 0);
    led_set(LED_L_YE, 0);
    led_set(LED_R_YE, 0);
    delay(200);
  }
}


int main() {
  led_init();
  motpwm_init();
  sens_init();
  analog_init();
  activate_output_bit(IO_LINE_EN);

  uint8_t mode;
  
  while (1==1) {
    enable_interrupts();
    delay(10);

    if ((sens_getLeft()!=0) || (sens_getRight()!=0)) {
      while ((sens_getLeft()!=0) || (sens_getRight()!=0)) {
        // wait for release
        delay(1);
      }
      mode++;
      if (mode==3) {
	mode=0;
      }
      switch (mode) {
        case 0:
	  do_blink(0x03);
	  break;
        case 1:
	  do_blink(0x06);
	  break;
        case 2:
	  do_blink(0x0c);
	  break;
      }
    }

    uint16_t val;    

    switch (mode) {
      case 0:
	val = line_get(LINE_L); 
	break;
      case 1:
	val = line_get(LINE_C); 
	break;
      case 2:
	val = line_get(LINE_R); 
	break;
    }

    set_output_groupbitval(IO_LEDS, L_YE, val>100);
    set_output_groupbitval(IO_LEDS, L_RD, val>200);
    set_output_groupbitval(IO_LEDS, R_RD, val>300);
    set_output_groupbitval(IO_LEDS, R_YE, val>400);    

  }
  return 0;
}