Ok, die letzte Erkenntnis:
1. ) Die IR-Dioden (Front und seitlich) arbeiten. Mit UartPutc wird was gesendet.
2.) Die Zeichen auf der Gegenseite lassen sich nicht rekonstruieren (empfange mit dem IR-Programmer) - scheint wohl Takt irgendwo noch nicht zu stimmen
3.) Die Abstandsmessung sendet keine IR-Signale
Meine Modifizierung (wegen ATMega16![]()
Ich muss ehrlich sein: ich hab noch nicht geschaut, welcher Befehl einen "Beep" über IR-Diode sendet und welcher empfängt. Bin jetzt auch zu müde ...Code:uint8_t objekt_sichtbar(uint8_t distance) { uint16_t j,z; DDRD |= (1 << DDD1); // Port D1 als Ausgang PORTD &= ~(1 << PD1); // PD1 auf LOW #if defined(__AVR_ATmega168__) OCR2A = 254-distance; //OCR2=0xFE ( sehr nahe ) #else OCR2 = 254-distance; //OCR2=0xFE ( sehr nahe ) #endif z=0; for(j=0;j<30;j++) // loop time: 5ms { if (PIND & (1 << PD0))z++; Sleep(6); // 6*Sleep(6)=1ms } if (z>=29) return FALSE; // Objekt nicht gefunden else return TRUE; } // der Rest ist unveraendert, denke ich uint8_t abstand() { uint8_t k,n; k=255; for(n=0;n<8;n++) { if (!objekt_sichtbar(n)) k=n; // solange kein Objekt, Distanz erhoehen } return k; } int main(void){ uint8_t n; Init(); FrontLED(ON); StatusLED(OFF); n = 0; while(1) { n=abstand(); if(n!=255) { if (n<6) StatusLED(GREEN); if (n<4) StatusLED(YELLOW); if (n<3) StatusLED(RED); if (n<2) BackLED(ON,ON); } Msleep(10); } }







Zitieren

Lesezeichen