Ampelsteuerung in Excel und Compact

Ein beliebtes Thema in Schulunterricht ist die Steuerung einer Modellampel. Oft wird das CompuLAB mit dem direkt anschließbaren Modell der Kreuzungsampel verwendet. Hinweise auf die didaktische Umsetzung findet man z.B. im Handbuch "Modellversuche" oder im DoIt-Handbuch im Elexs-Software-Archiv. Statt der Win3.1-Software DoIt sollte inzwischen eher Compact verwendet werden, das ebenfalls die Programmierumgebung von DoIt enthält. Damit kann auch das CompuLAB-USB eingesetzt werden.

Vielfach wird auch Excel zur Steuerung des CompuLAB oder anderer Interfaces verwendet. Der Umgang mit Word- und Excel-Makros wird in dem Buch MSR mit Word und Excel erläutert. Aus diesem Buch stammt das folgende Beispiel zur Steuerung einer Ampel in Excel: Ampel.XLS (Ampel.zip, 13 KB)


Verwendung des CompuLAB-USB

Will man die gleiche Aufgabe mit dem CompuLAB-USB und Excel lösen, bietet sich der Austausch der DLL an. Die in dem Buch verwendete RSAPI.DLL findet selbständig diverse Interfaces an der seriellen Schnittstelle. Für das CompuLAB-USB gibt es die CLUSB.DLL. Es genügt ein Austauschen der DLL-Funktionen im VB-Programm um die Ampel über die USB-Schnittstelle zu steuern: Ampelusb.XLS (Ampelusb.zip, 13 KB)

Declare Sub INIT Lib "CLUSB" ()
Declare Sub DOUT Lib "CLUSB" (ByVal Wert%)
Declare Function DIN Lib "CLUSB" () As Integer
Declare Function AIN Lib "CLUSB" (ByVal Eingang%) As Integer
Declare Sub DELAY Lib "RSAPI.DLL" (ByVal ms%)
'rt = 3: ge = 6: gn = 4: gr = 40
Sub Grün(bit)
 If bit = 0 Then ix = 40 Else ix = 4
 ActiveSheet.DrawingObjects("grün").Interior.ColorIndex = ix
End Sub
   
Sub Rot(bit)
 If bit = 0 Then ix = 40 Else ix = 3
 ActiveSheet.DrawingObjects("rot").Interior.ColorIndex = ix
 End Sub

Sub Gelb(bit)
 If bit = 0 Then ix = 40 Else ix = 6
 ActiveSheet.DrawingObjects("gelb").Interior.ColorIndex = ix
End Sub

Sub ampel()
    INIT  'CompuLAB-USB
    Blatt$ = "AmpelTAB"
    ThisWorkbook.Sheets(Blatt$).Activate
    a$ = "&h0C&h0C&h0C&h0C&h14&h26&h21&h21&h21&h21&h21&h22&h34"
    Do
        ix = 1
        Do
            x$ = Mid$(a$, ix, 4)
            If x$ <> "" Then
                ix = ix + 4
                Dez = Val(x$)
                Rot (Dez And 4)
                Gelb (Dez And 2)
                Grün (Dez And 1)
                DOUT Dez
                Calculate
                DELAY 1000
            End If
        Loop Until x$ = ""
    Loop Until 3 = 4
End Sub

Dieses EXCEL-VB-Programm verwendet einen String zum Speichern aller Ausgangszustände im Hexadezimalformat. Ein DoIt-Beispiel in Compact zeigt, wie eine Ampel mit Binärzahlen gesteuert werden kann.


In Excel lassen sich die einzelnen Steuerbits und die zugehörigen Zeiten in eine Tabelle schreiben. So fällt es leichter, einzelne Ampelzustände zu erkennen und zu ändern.

Die Daten können dann über das VB-Modul ausgelesen und zur Steuerung der Ampel verwendet werden.

AMPELusb2.XLS (AMPELusb2.zip, 10 KB)


Zurück zur Startseite der MB-News
Zurück zur Startseite AK-Modul-Bus