Belegung:

- Anoden beider IR-LEDs auf PIN21 (PD7)
- Kathode rechte IR-LED auf PIN2 (PB1)
- Kathode linke IR_LED auf PIN3(PB2)
- OUT vom SFH5110 auf PIN1 (PB0)

Spannungen:

- VCC von SFH5110 - 4,2V
- OUT von SFH5110 - 0V
- beide IR-LEDs - 2,2V

Testcode:
Code:
#include "asuro.h"
#include <stdlib.h>

uint8_t objekt_sichtbar_rechts(uint8_t distance)
{
   uint16_t j,z;
   
       PORTB |= (1 << PB1);   // PB1 auf HIGH (LED ausschalten)
          DDRB |= (1 << DDB2);   // PB2 als Ausgang
          PORTB &= ~(1 << PB2);   // PB2 auf LOW 

   OCR2  = 254-distance;   // wenn OCR2=0xFE dann Objekt sehr nahe
   z=0;
   for(j=0;j<30;j++) // loop time: 5ms
   {
      if (PIND & (1 << PB0))z++;
      Sleep(6); // 6*Sleep(6)=1ms
   }
   if (z>=29) return FALSE; // Objekt nicht gefunden
   else return TRUE;
}

uint8_t objekt_sichtbar_links(uint8_t distance)
{
   uint16_t j,z;
   
       PORTB |= (1 << PB2);   // PB2 auf HIGH (LED ausschalten)
          DDRB |= (1 << DDB1);   // PB1 als Ausgang
          PORTB &= ~(1 << PB1);   // PB1 auf LOW 

   OCR2  = 254-distance;   // wenn OCR2=0xFE dann Objekt sehr nahe
   z=0;
   for(j=0;j<30;j++) // loop time: 5ms
   {
      if (PIND & (1 << PB0))z++;
      Sleep(6); // 6*Sleep(6)=1ms
   }
   if (z>=29) return FALSE; // Objekt nicht gefunden
   else return TRUE;
}

uint8_t abstand_rechts()
{
   uint8_t k,n;
   
   k=255;
   for(n=0;n<8;n++)
   {
     if (!objekt_sichtbar_rechts(n)) k=n; // solange kein Objekt, Distanz erhoehen
   } 
   return k;
}

uint8_t abstand_links()
{
   uint8_t l,m;
   
   l=255;
   for(m=0;m<8;m++)
   {
     if (!objekt_sichtbar_links(m)) l=m; // solange kein Objekt, Distanz erhoehen
   } 
   return l;
}
/*************************************************************************

   Hauptprogramm

*************************************************************************/
int main(void)
{
      uint8_t n,m;
   
      Init();

   FrontLED(ON);
      while(1)
   {
         n=abstand_rechts();
      m=abstand_links();
      StatusLED(OFF);
         BackLED(OFF,OFF);
            
      if ((n!=255) || (m!=255))
         {
            if (n<2) StatusLED(GREEN);
            if (m<2) StatusLED(RED);
         Msleep(10);
      }
      else StatusLED(YELLOW);
   }
}
Wenn du bei diesem Programm eine der beiden IR-LEDs abdeckst, sollte die STATUS-LED grün oder rot leuchten.