Hallo

Prima, allerdings scheint mir der 470er etwas groß. Aber vielleicht ist das auch ein Vorteil weil das ACS dann nicht so empfindlich ist.

Ich habe meine bee jetzt reaktiviert und ein kleines Demo zusammengebastelt. Da mir die Library der bee noch nie gefallen hat, und als kleine Herausforderung für mich, verzichte ich vorerst auf den Einsatz der Lib. Ich hoffe, die Funktionen sind trotzdem nachvollziehbar.

Da meine ACS-Erweiterung andere Pins verwendet habe ich die #defines auch für meine bee eingefügt und auskommentiert. Diese Version sollte deshalb auf deiner bee funktionieren:

PHP-Code:
// Übungen für ACS an Nibobee                                         9.6.11 mic

// https://www.roboternetz.de/community/showthread.php?53494-ACS-an-NIBObee

// Die Anoden der rechten IR-LEDs hängen mit Vorwiderstand an PA0 (X1-AN0)
// Die Anoden der linken IR-LEDs hängen mit Vorwiderstand an PA1 (X1-AN1)
// Die Kathoden beider IR-LEDs sind mit PA3 (X3-AN3) verbunden
// Der IR-Empfänger ist mit PA2 (X2-AN2) verbunden

// pacman-bee
#define ddr_acs_led_l      DDRA     // Anoden der IR-LEDs links
#define port_acs_led_l     PORTA
#define pin_acs_led_l    (1<<PA1)

#define ddr_acs_led_r      DDRA    // rechts
#define port_acs_led_r     PORTA
#define pin_acs_led_r     (1<<PA0)

#define ddr_acs_36kHz      DDRA     // Kathoden der IR-LEDS mit 36kHz getaktet
#define port_acs_36kHz     PORTA
#define pin_acs_36kHz     (1<<PA3)

#define ddr_acs_tsop      DDRA     // Eingang IR-Empfänger
#define port_acs_tsop     PINA  // Achtung, das ist ein Eingang!
#define pin_acs_tsop      (1<<PA2)

/*
// radbruch-bee
#define ddr_acs_led_l      DDRA     // Anoden der IR-LEDs links
#define port_acs_led_l     PORTA
#define pin_acs_led_l    (1<<PA2)

#define ddr_acs_led_r      DDRA    // rechts
#define port_acs_led_r     PORTA
#define pin_acs_led_r     (1<<PA3)

#define ddr_acs_36kHz      DDRC     // Kathoden der IR-LEDS mit 36kHz getaktet
#define port_acs_36kHz     PORTC
#define pin_acs_36kHz     (1<<PC2)

#define ddr_acs_tsop      DDRC     // Eingang IR-Empfänger
#define port_acs_tsop     PINC  // Achtung, das ist ein Eingang!
#define pin_acs_tsop      (1<<PC3)
*/

#include <avr/io.h>
#include <util/delay.h>

void leds(uint8_t status)    // status bit0 bis 3 entspricht den LED0 bis 3
{
    
PORTB &= 0b11110000;    // alle LED ausschalten
    
PORTB |= 0b1111 status;    // gewünschte LED einschalten
}

int main(void)
{
    
DDRB |= 0b1111// PB0 bis PB3 sind die LED 0 bis 3
    
leds(0b1001); // LED 0 und 3 einschalten
    
_delay_ms(1000); // eine Sekunde warten
    
leds(0); // alle LED ausschalten

    
ddr_acs_led_l |= pin_acs_led_l// linke ACS-LED Anode
    
ddr_acs_36kHz |= pin_acs_36kHz// Kathoden beide LED
    
port_acs_36kHz &= ~pin_acs_36kHz// Dauerlicht
   
    
while(1)
    {
        
port_acs_led_l |= pin_acs_led_l// linke IR-LED anschalten
        
leds(0b0010); // LED1 zur Kontrolle einschalten
        
_delay_ms(500);

        
port_acs_led_l &= ~pin_acs_led_l// linke IR-LED ausschalten
        
leds(0); // LED1 zur Kontrolle ausschalten
        
_delay_ms(300);
    }
    return(
0);

Gruß

mic