Eine einfache programmierbare Lichtorgel

Immer wenn es darum geht, ein Gerät an den Computer anzuschließen, welches eventuell auch noch selbst gebaut wurde, denken viele an komplizierte und undurchschaubare Schaltungen, große Geldausgaben und eventuell an Angst, die eigene Bastelei an das wertvolle Gerät anzuschließen.
Das muss aber nicht so sein...

Was wird gebraucht?

  • ein Stück Pappe 80 x 100
  • 8 Miniplasttransistoren npn
  • 8 Widerstände 10 kW
  • 8 Widerstände 200 W
  • 8 Leuchtdioden
  • ein Anschlussstecker für den Parallelport
  • etwas Kabel
  • Freude am Basteln
Die Ausgaben betragen hierfür maximal 5,- DM (beispielsweise über A-Z Elektronik und Conrad Electronics).
Die Werte für die Bauelemente sind dabei ziemlich unkritisch.

Schaltungsaufbau

Wird vom Computer an Y eine logische 1 ausgegeben, so liegen dort 5V an. Dadurch fließt durch den Widerstand ein Strom von ca. 5V:10kW=0,5mA. in den Transistor. Der Transistor wird leitend und so kann ein Strom vom Pluspol durch die Leuchtdiode, den Widerstand von 200W und den Transistor zum Minuspol fließen.
Diese Schaltung wird 8 mal nebeneinander aufgebaut. Dabei werden alle Emitter miteinander verbunden, mit dem Minuspol der Schaltung und dem Pin 18 des Druckerports. Die Anoden der Leuchtdioden werden ebenfalls untereinander verbunden und mit dem Pluspol der Schaltung. Als Spannungsquelle reicht eine einfache Flachbatterie mit 4,5V aus. Bei höheren Spannungen muss der Wert von 200 W entsprechend erhöht werden.
Die 8 Anschlüsse Y gehen an die Pins 2-9 des Druckerports. Zum Testen der Schaltung reicht es, wenn der Pluspol der Schaltung kurz an jeden Eingang Y der Schaltung gehalten wird. Genau dann muss die zugehörige Leuchtdiode aufleuchten. Die Schaltung wird erst an den Computer angeschlossen, wenn sie einwandfrei funktioniert.

Unbedingt auf die richtige Polarität der Spannungsquelle achten. Erst die Schaltung anschließen, dann den Computer einschalten.

Hier noch einmal die komplette Schaltung:

Zur Programmierung

Das nachfolgende Programm gibt nacheinander die Zahlen von 1 bis 255 an den Druckerport aus. Die Warteschleife (FOR Zahl=1 to 1000 : NEXT --> 1000 mal nichts tun) ist erforderlich, um die Ausgabe auch an der Lichtorgel beobachten zu können. Ohne sie wäre der Ablauf zu schnell. Bei schnelleren Computern muss die Anzahl der Schleifen eventuell erhöht werden.

CLS                            'Bildschirm löschen
Drucker=&H378                  'Zuweisung der Druckeradresse an
                               'die Variable Drucker
FOR Zahl=1 TO 255
    OUT Drucker, Zahl          'Ausgabe von Zahl an den Druckerport
    FOR Zeit=1 TO 1000 : NEXT  'und für 1000 Schleifen warten
NEXT

OUT Drucker, 0                 'alle Pins auf 0 setzen
     

Entwicklung eines Programms zu einem speziellen Leuchteffekt

Ziel : Zwei helle Punkte sollen immer hin und her laufen. Auf Tastendruck wird das Programm beendet und alle Leuchtdioden gehen aus.
Im ersten Arbeitsschritt zeichnet man sich nacheinander alle Zustände auf, welche die Lichtorgel nacheinander annehmen soll. Dabei bedeutet jede Zeile einen aktuellen Zustand. Dort wo die LED leuchtet, muss am Druckerport eine 1 ausgegeben werden, sonst eine 0.
Man kann also jede Zeile als eine 8- stellige Dualzahl betrachten. Daneben wandelt man diese Dualzahlen gleich in Dezimalzahlen um.
In diesem Beispiel kann man sehen, dass sich alle Zustände nach der 12. Zeile wiederholen.

Nun schreibt man sich ein kleines Programm, welches nacheinander die berechneten Werte an den Druckerport ausgibt. Ein mögliche Lösung könnte so aussehen:

CLS                                   'Bildschirm löschen
Drucker=&H378                         'Zuweisung der Druckeradresse an
Anzahl=12                             'die Variable Drucker, Anzahl und
Dauer=1000                            'Wartezeit zwischen 2 Zuständen
                                      'angeben
WHILE INKEY$=""                       'Solange keine Taste gedrückt wurde
      RESTORE                         'Datenzeiger auf Anfang setzen
      FOR Zahl=1 TO Anzahl            'Wiederhole für alle Zustände
          READ Wert                   'Wert von DATA- Zeile holen
          OUT Drucker, Wert           'Wert an den Druckerport ausgeben
          FOR Zeit=1 TO Dauer : NEXT  'warten
      NEXT                            'weiter mit nächstem Wert
WEND                                  'Ende der WHILE- Schleife
OUT Drucker, 0                        'alle Pins auf 0 setzen

DATA 192, 96, 48, 24, 12, 6           'die eigentlichen Daten für den
DATA 3, 6, 12, 24, 48, 96             'Druckerport
      

Zum Schluss einige einfache Beispieldateien zum Download. Es wird eine angeschlossene Lichtorgel vorausgesetzt.(rechte Maustaste und Ziel speichern unter)

Beispiel 1
Beispiel 2
Beispiel 3
Beispiel 4

zurück