IR-Hinderniserkennung findet Lichtquellen!
Hi an alle^^
Der Thematitel sollte wohl alles sagen...
Der ASURO ist mein erster Roboter überhaupt, aber ich hab mir gedacht, wenn schon denn schon und hab die IR-LED und den IR-Empfänger nach der Vorlage von waste umgebaut O:)
Dann habe ich den example code aus der neusten Lib-Version für den IR-Kollisionstest geflashed.
Das Ergebnis:
Sobald der Empfänger im Licht ist leuchtet die Lampe grün, ist er im Schatten leuchtet die Lampe rot. Fröhlich rumdrücken auf den Tastern zeigt keinerlei Wirkung (also ich merke nichts von einer Veränderung der Pulsbreite). Aber mein Ziel war eig. festzustellen ob da ne Wand vor dem ASURO ist.
Kann mir jemand weiterhelfen?
Code:
#include "asuro.h"
#include <stdlib.h>
static unsigned char ocr2 = 0x91;
void InitIRDetect(void)
{
UCSRB = 0;
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW
OCR2 = ocr2;
}
void InitUart(void)
{
OCR2 = 0x91; // duty cycle fuer 36kHz
}
int main(void)
{
unsigned char sw;
Init();
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW
// InitIRDetect();
while (1)
{
UCSRB = 0;
OCR2 = 0xFE;
if (PIND & (1 << PD0))
StatusLED(GREEN);
else
StatusLED(RED);
sw = PollSwitch();
if (sw & 0x01)
ocr2 = 0xFE; //Pulsbreite 1
if (sw & 0x02)
ocr2 = 0xFD; //Pulsbreite 2
if (sw & 0x04)
ocr2 = 0xFB; //Pulsbreite 4
if (sw & 0x08)
ocr2 = 0xF7; //Pulsbreite 8
if (sw & 0x10)
ocr2 = 0xEF; //Pulsbreite 16
if (sw & 0x20)
ocr2 = 0x90; //Pulsbreite 110
if (sw)
{
OCR2 = 0x91;
PrintInt(sw);
SerPrint(" ");
PrintInt(ocr2);
SerPrint("\r\n");
}
// Msleep(100);
}
return 0;
}