Hallo zusammen,
ich habe mir von http://www.e-robotix.de/epages/61660837.sf die ATMEGA32 - Bluetooth - Platine gekauft und sie mit einer eigenen Erweiterung auf Basis der IR-Entfernungsmessung (sh. Anlage) ausgestattet.
Die PINs meiner Platine habe ich so belegt:
- Anoden beider IR-LEDs auf PIN21 (PD7) des ATMEGA32
- Kathode rechte IR-LED auf PIN2 (PB1) des ATMEGA32
- Kathode linke IR_LED auf PIN8 (PB7) des ATMEGA32
- OUT vom SFH5110 auf PIN7 (PB6) des ATMEGA32
Die Software sieht so aus (Codeschnipsel):
So weit so gut, aber die Entfernungsmessung funktioniert nicht, auf OUT des SFH5110 messe ich z. B. keine Spannung.Code:uint8_t objekt_sichtbar_rechts(uint8_t distance_r) { uint16_t j,z; PORTB |= (1 << PB1); // PB1 auf HIGH (LED ausschalten) DDRB |= (1 << DDB7); // Port B7 als Ausgang PORTB &= ~(1 << PB7); // PB7 auf LOW OCR2 = 254-distance_r; // wenn OCR2=0xFE dann Objekt sehr nahe z=0; for(j=0;j<30;j++) // loop time: 5ms { if (PINB & (1 << PB6))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_l) { uint16_t i,y; PORTB |= (1 << PB7); // PB7 auf HIGH (LED ausschalten) DDRB |= (1 << DDB1); // Port B1 als Ausgang PORTB &= ~(1 << PB1); // PB1 auf LOW OCR2 = 254-distance_l; // wenn OCR2=0xFE dann Objekt sehr nahe y=0; for(i=0;i<30;i++) // loop time: 5ms { if (PINB & (1 << PB6))y++; Sleep(6); // 6*Sleep(6)=1ms } if (y>=29) return FALSE; // Objekt nicht gefunden else return TRUE; }
Bitte um Tipps und Hinweise was ich hier falsch gemacht habe.







Zitieren

Lesezeichen