Hallo
Die aktuellen Threads zur Abstandsmessung mit der IR-Funktion (nach vorne oder oben) sind ja recht inspirierend, hier mein minimaler Umbau:
Bild hier Bild hier Bild hier Bild hier
Ein Stück Alu-Folie auf einer Seite dreimal gefaltet und auf den Kondensator geklebt (blanke Seite unten!). Der "Reflektor" sollte über die IR-Sendediode hinausragen und ca. 45 Grad haben. Ein Stück Schrupfschlauch auf der IR-Sendediode verhindert Streulicht. (Runde Klebebandpads fertige ich mit einem Locher)
Hier der Testcode dazu:
Code:
#include "asuro.h"
#include <stdlib.h>
int main(void)
{
unsigned char sw, speed;
unsigned char ir,ir1,ir2;
Init();
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW
OCR2 = 0xFC;
speed=140;
while(1)
{
ir=PIND & (1 << PD0);
if (ir || ir1){
BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(speed,speed);
} else {
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(speed,speed);
if (speed > 0) Msleep(500);
MotorDir(BREAK,RWD);
MotorSpeed(0,speed);
if (speed > 0) Msleep(500);
}
ir2=ir1; ir1=ir;
sw = PollSwitch();
/*
if (sw & 0x01)
OCR2 = 0xFE;
if (sw & 0x02)
OCR2 = 0xFD;
*/
if (sw & 0x04)
OCR2 = 0xFC;
if (sw & 0x08)
OCR2 = 0xFB;
/*
if (sw & 0x10)
OCR2 = 0xFA;
if (sw & 0x20)
OCR2 = 0xF9;
*/
}
return 0;
}
Der Code basiert auf dem Democode von Waste aus oben erwähnten Betrag. Der Wert für die Modulation der IR-Diode ist etwas fummelig. Wenn alles klappt sieht das dann so aus:
Bild hier
(Meine "Arena" ist ein zum Kreis gebundener Kabelkanaldeckel)
Video1(avi 0,6MB)
Video2(avi 1,6MB)
Flashen muss dann man natürlich von vorne. Viel Spass beim Nachbau.
Gruß
mic
[Edit] Videos neu verlinkt
Lesezeichen