Programmierbare IR Fernbedienung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Iguan

Betreff: Programmierbare IR Fernbedienung

BeitragMo, Jan 04, 2010 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 05, 2010 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
hhmm... also damit kenn ich mich nicht aus, aber ich glaub blitzbasic wurde dafür nicht gemacht, dafür gibts Java Wink
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!

Rechtschreibfehler sind special-effekts meiner Tastatur Wink

Silver_Knee

BeitragDi, Jan 05, 2010 0:06
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 05, 2010 0:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Rolling Eyes
Es kommt immer auf die Phantasie und Können des Programmierers an, was man mit der jeweiligen Programmiersprache anstellt Cool

Iguan

BeitragDi, Jan 05, 2010 0:09
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Silver_Knee: Könntest du das bitte noch etwas präzisieren ("...die richtigen werte übergibt..."

Midimaster

BeitragDi, Jan 05, 2010 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jan 05, 2010 0:37
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 05, 2010 1:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Rolling Eyes

Hoffe mal, dass die BasicStamp2 dazu schnell genug ist... Rolling Eyes
 

BadDeath

BeitragDi, Jan 05, 2010 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich glaube BB bzw. dein ganzer Vorgang ist zu lahm:

user posted image


900us sind nicht wirklich lang Rolling Eyes Auf der Seite ist das RC-5-Protokoll etwas erklärt, auch welche Zeiten dabei benutzt werden und die Toleranzen:

Mehr Infos: http://www.sprut.de/electronic/ir/rc5.htm
-~= real coders just code in binary =~-
 

Bobbleboy

BeitragDo, Jan 07, 2010 6:30
Antworten mit Zitat
Benutzer-Profile anzeigen
wäre interessant zu erfahren ob du eine lösung gefunden hast...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group