Hallo
Naja, wirklich falsch ist das wohl nicht. Wenn ich aber richtig vermute und die IR-LED bei "Port_WriteBit(IR_left,PORT_ON);" leuchtet und "ACS_L = Port_ReadBit(TSOP);" den Ausgang des TSOP einliest, dann ist es richtig, dass die LED bei "if(ACS_L == 1) Port_WriteBit(FLL,PORT_ON);" immer leuchtet.Jedoch gehen die LED's immer sofort an..
Ist hier vielleicht etwas falsch? if(ACS_L == 1)
Der Ausgang des TSOP wird low (0V), wenn er ein IR-Signal erkennt. Und weil deine IR-LED keine Trägerfrequenz sendet, erkennt der TSOP nicht, dass sie leuchtet und sein Ausgang bleibt immer high (5V).
Ein einfacher Ansatz: Man schließt die IR-LED an zwei Pins an. Ein Pin erzeugt die Trägerfrequenz (z.B. 36 oder 38 kHz je nach TSOP) an der Anode der LED und der zweite Pin schaltet die Kathode der LED gegen GND, wenn sie ein Signal senden soll. Die Frequenz kannst du eventuell einfach mit mit einer Zählschleife und togglen der IR-Led erzeugen. Dann benötigst du aber vermutlich ein Messgerät um die erzeugte Frequenz zu messen. Besser, aber mit mehr Programmieraufwand verbunden, ist das Erzeugen der Frequenz mit einem Timer.
C-Compact ist ein "Dialekt" von C.
Gruß
mic
Lesezeichen