Frage deutsch
~~~~~~~~~~~~~~~~
Wie steuere ich LEDs, Relais usw.über den Parallelport an?
Wie gebe ich elektrische Signale an den Druckerport aus?
Question English
~~~~~~~~~~~~~~~~
How to control LEDs, relays etc. via the parallel port?
Antwort 1
~~~~~~~~~~~~~~~~
[ von Skilltronic ( skillfinger*gmx.de ) im QB-Forum,
24.6.2004 ]
Die 8 Datenleitungen D0 - D7 stehen für die 8 Bit des ausgegebenen Wertes
(Pin 2-9 des Drucker-Ports 888). Wenn Du die über die Zahlentasten von 1-8
steuern willst, dann z.B. so:
eingabe:
taste$ = INKEY$
IF taste$ = "" THEN GOTO eingabe
taste = ASC(taste$)
IF taste = 27 THEN END ' Abbruch mit ESC
bit = taste - 49
IF bit < 0 OR bit > 7 THEN GOTO eingabe
bitwert = 2 ^ bit
bytewert = bytewert XOR bitwert
OUT(888), bytewert
GOTO eingabe
So kannst Du jedes Bit einzeln an- und ausschalten. Das mit dem bit = taste-49 funktioniert wie folgt: Der ASCII-Wert des Zeichens "1" ist 49, das von
"2" ist 50 usw. Den Wert bekommt man mit taste=ASC(taste$). Davon dann eben 49
abgezogen ergibt die Zahlen von 0-7.
Für die Steuerleitungen (Strobe, Auto Feed, Init und Slkt In) gilt ein
anderes Vorgehen, da diese bidirektional ausglegt sind. Das ist nichts
schmutziges, sondern bedeutet nur, dass über sie sowohl Daten ausgegeben als
auch eingelesen werden können. Im unbeschalteten Zustand werden sie intern durch
einen 3,3k-Widerstand auf High gezogen. Sind sie allerdings über Leuchtdioden
mit der Masse verbunden, sind sie auf Low.
Die 4 Steuerleitungen liegen im Steuerregister 890 auf den Bits:
Bit 0 - Strobe
Bit 1 - Auto Feed
Bit 2 - Init
Bit 3 - Slkt In
Die Bits 4-7 im selben Register stehen für was Anderes.
Wenn Du jetzt also mit INP(890) dieses Register abfragst, erhälst Du
irgendeinen Wert, der von diesen unbestimmten oberen Bits und der Beschaltung
der 4 Leitungen abhängt.
Erschwerend kommt noch dazu, dass die Signale Strobe, Auto Feed und SI sowohl
bei der Ein- als auch der Ausgabe invertiert werden. Das kannst Du aber auch mit
einer XOR-Verknüpfung kompensieren.
Die invertierten Leitungen liegen ja auf den Bits 0,1 und 3. Bei der
Dezimalzahl 11 sind genau diese Bits gesetzt ( 1 + 2 + 8). wenn Du ein Bit über
XOR mit einer 1 vrknüpfst, wird es ja sozusagen "umgedreht". Schreibst Du also
OUT(890), ausgabewert XOR 11 ,
Ist das Problem erledigt. Übertragen auf das obige Beispiel, müssten sich so
die 4 Leitungen mit den Tasten 1-4 an- und ausschalten lassen:
...
IF bit < 0 OR bit > 3 THEN GOTO eingabe
bitwert = 2 ^ bit
bytewert = bytewert XOR bitwert
OUT(890), bytewert XOR 11
...
Ich hoffe das funktioniert .
Übrigens hat sich Sebastian Steiner( www.sebastian-steiner.de ) nach einem
Plan von mir eine 24-Kanal Relaisplatine für den COM-Port gebaut. Wenn dir also
mal die Leitungen ausgehen.
Und hier noch eine Warnung: Leuten mit nicht sehr ausgeprägten Kenntnisse im
Bereich Elektrotechnik würde ich zum ersten Experimentieren den COM-Port
empfehlen. Der ist nicht so leicht kaputtzumachen wie der Druckerport, bei dem
eine Überspannung ausreicht, den ganzen Computer abzufackeln.
Weitere detaillierte Infos über die Ansteuerung externer Hardware über die
Druckerschnittstelle erhältst Du auf folgenden Webseiten:
• www.franksteinberg.de - Gute Seite zur
Ansteuerung externer Hardware über Parall- und seriellen Port mit
QBasic
• www.skilltronics.de -meine eigene
Webseite
• www.icc-software.de/e_lptint.htm
• www.woeste.org/intface.htm -
Beschreibung eines einfachen Interfacesystems - von Klaus Schreiber vom
Friedrich Leopold Woeste Gymnasium in Hemer mit einem Tutorial zur Ansteuerung
das Parallel Ports über QBasic zur Verwendung
der Daten- und Steuerleitung als Hardware Ein-/Ausgänge
• www.activevb.de - Gute Seite zu Visual
Basic mit Tutorial zur Parallelport-Ansteuerung. Genaue Internetadresse des
Parallport-Tutorials: www.activevb.de/tutorials/tut_parallel/parallel.html
[ The QBasic-MonsterFAQ --- Start Page: www.antonis.de/faq ]