Programmierbare IR Fernbedienung
Übersicht

![]() |
IguanBetreff: Programmierbare IR Fernbedienung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo allerseits
Ich arbeite mit der Inpout32.dll sprich der ansteuerung des Parallelports und würde gerne via Blitzbasic, meinen TV, Musik-Anlage etc steuern. (IR Fernbedienung) Nun habe ich einen Phototransistor zwischen Pin 10 und Pin 25 geschaltet mit dem Emitter gegen Pin 10. (Pin 18 bis Pin 25 sind Masse beim Parallelport) Dieser dient dem Aufzeichnen des Fernbedienungssignals. Eine IR-LED habe ich zwischen Pin 2 und Pin 24 geschaltet (Emitter gegen Pin 24) Mit folgendem Testprogramm wird wenn ich auf der TV-Fernbedienung eine Tastedrücke und ich sie auf den Fototransistor richte, das Signal aufgezeichnet (Bei der ersten Flanke des Fototransistors) Mit der Taste "1" auf der Tastatur wird dann genau dieses Signal auf der IR-LED wieder ausgegeben, welches zuvor aufgezeichnet wurde... (Das bestätigt auch meine Digitalkamera, welche ich benutze um das IR-Licht zu erkennen) Nur tut sich leider gar nichts wenn ich die IR-LED auf den Empfänger des TV, der Musikanlage etc... richte Könnte auch sein, dass meine standard IR-LED nicht die richtige Wellenlänge besitzt, oder dass sie einfach zu schwach leuchtet (habe sie schon mit einem Transistor verstärkt... ohne erfolg) Wiederum könnte es sein, dass Blitzbasic dafür schlichtweg zu langsam ist und nicht jeden Impuls aufzeichnet, obwohl da schon extrem viele 1-sen und 0-en bei nur einem sehr kurzem Tastendruck auf der TV Fernbedienung aufgezeichnet werden) Hier mein Testprogramm: Code: [AUSKLAPPEN] Graphics 800,600,0,2 font = LoadFont("Tahoma",9) SetFont font Dim IR(100000) a = 0 Repeat ;Bei der ersten Flanke beginnen mit der Aufzeichnung If Abs(120-(Inp32(889))) = 64 Or a = 1 Then a = 1 If i < 100000 Then ;Array füllen mit den empfangenen signalen (1sen und 0en) If Abs(120-(Inp32(889))) = 64 Then IR(i) = 1 Else IR(i) = 0 Else ;Aufgezeichnetes Signal anzeigen ii = 0 For iy = 0 To 70 For ix = 0 To 120 If ii < 100000 Then If IR(ii) = 1 Then Color 255,0,0 Else Color 255,255,255 Text ix* 6,iy* 8+12,IR(ii) ii = ii + 1 EndIf Next Next EndIf i = i + 1 EndIf If KeyDown(2) Then ;Signal wieder auf der IR-LED ausgeben For iii = 0 To 99999 If IR(iii) = 1 Then Out32(888,1) Else Out32(888,0) EndIf Next EndIf Until KeyHit(1) was meint ihr dazu, wo könnte das Problem liegen? vielen Dank schon im Voraus! mfg Iguan |
||
![]() |
jokerman29 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hhmm... also damit kenn ich mich nicht aus, aber ich glaub blitzbasic wurde dafür nicht gemacht, dafür gibts Java ![]() |
||
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!
Rechtschreibfehler sind special-effekts meiner Tastatur ![]() |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
kein Argument...
Denke nicht dass Blitz zu lahm ist. Ich frage mich allerdings ob deine Konstruktion auch wirklich alle richtigen werte übergibt. Das mit der Wellenlänge kann auch sein. |
||
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Java kenn ich leider zu wenig... möchte es unbedingt mit BlitzBasic machen.. und auch Java ist nicht speziell gemacht um eine IR-Fernbedienung zu programmieren ![]() Es kommt immer auf die Phantasie und Können des Programmierers an, was man mit der jeweiligen Programmiersprache anstellt ![]() |
||
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Silver_Knee: Könntest du das bitte noch etwas präzisieren ("...die richtigen werte übergibt..." | ||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab so was vor jahren auch schon mal gemacht, aber mit einem total anderen ansatz:
ich habe einfach die original-fernsteuerung zerlegt und die kontakte der tasten mit den verschiedenen pins des parallel-pots verbunden. d.h. der original LED sendet weiterhin die befehle. der parallel-port schließt nur die kontakte geht natürlich nur, wenn du nicht mehr tasten als pins brauchst. zu deiner methodeb hab ich auch noch eine idee: teste doch mal, ob das senden der sequenz genauso lang dauert wie das empfangen einer sequenz. |
||
- Zuletzt bearbeitet von Midimaster am Di, Jan 05, 2010 0:44, insgesamt einmal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Frage ist auch, ob der Parallelport schnell genug ist, jede Flanke in Echtzeit empfangen zu können. Dann kommt noch das Problem, das weder BlitzBasic, noch Java oder ähnliche Programmiersprachen nicht Echtzeittauglich sind, weil schon das Betriebssystem da nicht mit macht. Speziell für solche Fälle der Messungen gibt es gesonderte Betriebssysteme. Um eben genau das Problem zu umgehen, schliesst man ein Kontroller an den Rechner an, und alles funktioniert wunderbar. Ansonsten kann meiner Meinung nach nur dann so ein Echtzeitempfangen von Daten gemacht werden, wenn man das Signal selbst genaustens kennt, bzw. man es selbst generiert. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für die schnellen Antworten...
Hmm.. aber so viele 1sen und 0en die da in einer sooo kurzen zeit aufgezeichnet wurden, kann ich mir das kaum vorstellen... Zur not gäbe da noch eine etwas umständlichere methode, die auch mit Blitzbasic Funktionieren würde: Mikrokontroller (Ich benutze Basic Stamp 2)zeichnet Signale auf, Blitzbasic sendet dem Controller, welches signal er senden soll (via Comport) -> Mikrokontroller sendet signal. ![]() Hoffe mal, dass die BasicStamp2 dazu schnell genug ist... ![]() |
||
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich glaube BB bzw. dein ganzer Vorgang ist zu lahm:
![]() 900us sind nicht wirklich lang ![]() Mehr Infos: http://www.sprut.de/electronic/ir/rc5.htm |
||
-~= real coders just code in binary =~- |
Bobbleboy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wäre interessant zu erfahren ob du eine lösung gefunden hast... | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group