-         

Ergebnis 1 bis 9 von 9

Thema: Velleman K8055 Eingänge auslesen

  1. #1

    Velleman K8055 Eingänge auslesen

    Anzeige

    Hallo,
    Das ist mein erster Beitrag . Trotz Suchfunktion habe ich jedoch nichts gefunden was mir helfen könnte.
    Ich muss in der Schule mit dem Velleman K8055 (Programiersprache VBA) eine 7-Segment-Anzeige ansteuern (kein Problem ). Jedoch , und das ist mein Problem, soll immer wenn es ein Signal des ersten Eingangs gibt, die Anzeige auf die nächst größere Zahl umspringen.

    Könnt ihr mir helfen?

    Viewty-Fan

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Hallo! Das K8055 ist hier nicht so wirklich populär (es ist ein Experimentierboard mit dem man eigentlich keine Roboter bauen kann). Deine Frage ist nicht ganz klar, was für ein Signal auf was für einem Eingang? Soll das ganze wie eine Art Event-Counter funktionieren? Das Board hat doch extra Counter Eingänge. Benutz doch die und gib das dann auf der Anzeige aus.
    Viele Grüße, William
    -> http://william.thielicke.org/

  3. #3
    Erst einmal danke für deine Antwort. Ich meine einen der 5 Digital Eingänge. Wenn dort ein Signal ,vor erst nur durch den Taster, erzeugt wird soll die 7-Segment-Anzeige umspringen.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.01.2006
    Ort
    Mönchengladbach
    Beiträge
    544
    @Viewty-Fan:
    Wo liegt jetzt genau das Problem?! Dafür gibts doch die Funktionen:

    ReadDigitalChannel(Channel)
    ReadAllDigital(Buffer)

    Lad dir mal die Software von Vellemann runter und lese dir die Doku durch.

    Gruß,
    SIGINT

  5. #5
    Ich weiß das es diese Funktionen gibt... Nur weiß ich nicht wie ich sie benutzen soll. Kannst du vielleicht einmal einen Beispiel Code dafür hochladen???

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Erst klemmst du deinen Taster zwischen DigiInput 1 und GND an. Dann machst du in VB einen timer mit z.B. 250ms der folgendes ausführt:
    SoOftWurdeGedrueckt = Readcounter(1)

    Das sollte doch funktioneiren...? Wo sind deine Schwierigkeiten? Poste doch mal deinen Code.
    Viele Grüße, William
    -> http://william.thielicke.org/

  7. #7
    Hier ist mein Code. Wahrscheinlich gibt es bei den Eingängen kein Problem. Nur Arbeite ich mit VBA erst seit Mitwoch. Daher bin ich Anfänger und habe gar keine Ahnung wie das gehen soll. Also überall wo jetzt MsgBox steht soll per Digital Eingang des Interfaces weitergeschaltet werden. Dh. Wenn es ein Signal über den Digitalen Eingang gibt dann nächste Zahl. Könnt ihr mir das Programmieren???

    Code:
    Private Sub CommandButton12_Click()
    '7 Segment Anzeige
    Dim t As Integer
    t = 50
        MsgBox "Zahl 0", vbExclamation, "7 Segment Anzeige"
        DoEvents
        'Zahl 0
        SetAllDigital
        ClearDigitalChannel 1
        ClearDigitalChannel 8
        MsgBox "Zahl 1", vbExclamation, "7 Segment Anzeige"
        ClearAllDigital
        DoEvents
        'Zahl 1
        SetDigitalChannel 4
        SetDigitalChannel 7
        Sleep t
        DoEvents
        MsgBox "Zahl 2", vbExclamation, "7 Segment Anzeige"
        ClearAllDigital
        'Zahl 2
        SetDigitalChannel 3
        SetDigitalChannel 4
        SetDigitalChannel 1
        SetDigitalChannel 4
        SetDigitalChannel 5
        SetDigitalChannel 6
        Sleep t
        DoEvents
        MsgBox "Zahl 3", vbExclamation, "7 Segment Anzeige"
        ClearAllDigital
        'Zahl 3
        SetDigitalChannel 3
        SetDigitalChannel 4
        SetDigitalChannel 1
        SetDigitalChannel 7
        SetDigitalChannel 6
        Sleep t
        DoEvents
        MsgBox "Zahl 4", vbExclamation, "7 Segment Anzeige"
        ClearAllDigital
        'Zahl 4
        SetDigitalChannel 2
        SetDigitalChannel 1
        SetDigitalChannel 4
        SetDigitalChannel 7
        Sleep t
        DoEvents
        MsgBox "Zahl 5", vbExclamation, "7 Segment Anzeige"
        ClearAllDigital
        'Zahl 5
        SetDigitalChannel 3
        SetDigitalChannel 2
        SetDigitalChannel 1
        SetDigitalChannel 7
        SetDigitalChannel 6
        Sleep t
        DoEvents
        MsgBox "Zahl 6", vbExclamation, "7 Segment Anzeige"
        ClearAllDigital
        'Zahl 6
        SetDigitalChannel 2
        SetDigitalChannel 3
        SetDigitalChannel 5
        SetDigitalChannel 6
        SetDigitalChannel 7
        SetDigitalChannel 1
        Sleep t
        DoEvents
        MsgBox "Zahl 7", vbExclamation, "7 Segment Anzeige"
        ClearAllDigital
        'Zahl 7
        SetDigitalChannel 3
        SetDigitalChannel 4
        SetDigitalChannel 7
        Sleep t
        DoEvents
        MsgBox "Zahl 8", vbExclamation, "7 Segment Anzeige"
        ClearAllDigital
        'Zahl 8
        SetAllDigital
        ClearDigitalChannel 8
        Sleep t
        DoEvents
        MsgBox "Zahl 9", vbExclamation, "7 Segment Anzeige"
        ClearAllDigital
        'Zahl 9
        SetAllDigital
        ClearDigitalChannel 5
        ClearDigitalChannel 8
        Sleep t
        DoEvents
        MsgBox "Programm beenden", vbExclamation, "7 Segment Anzeige"
        ClearAllDigital
    End Sub

    Danke das ihr soviel Geduld habt.
    Viewty-Fan

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    So ungefähr könnte das gehen. Wenn du weiter mit VB arbeiten willst solltest du dich auch mal mit der Programmiersprache auseinandersetzen.... Der Code sollte z.B. nicht auf einen Button gelegt werden sondern in einen Timer. Auf einen anderen Button sollte man dann die Funktion ResetCounter(1) legen damit wieder von null losgezählt wird.

    Code:
    Private Sub CommandButton12_Click()
    	Dim number As Integer
    	number = Readcounter(1)
    	Select Case number
    		Case 0
    			'Zahl 0
    			SetAllDigital
    			ClearDigitalChannel 1
    			ClearDigitalChannel 8
    		Case 1
    			ClearAllDigital
    			'Zahl 1
    			SetDigitalChannel 4
    			SetDigitalChannel 7
    		Case 2
    			ClearAllDigital
    			'Zahl 2
    			SetDigitalChannel 3
    			SetDigitalChannel 4
    			SetDigitalChannel 1
    			SetDigitalChannel 4
    			SetDigitalChannel 5
    			SetDigitalChannel 6
    		Case 3
    			ClearAllDigital
    			'Zahl 3
    			SetDigitalChannel 3
    			SetDigitalChannel 4
    			SetDigitalChannel 1
    			SetDigitalChannel 7
    			SetDigitalChannel 6
    		Case 4
    			ClearAllDigital
    			'Zahl 4
    			SetDigitalChannel 2
    			SetDigitalChannel 1
    			SetDigitalChannel 4
    			SetDigitalChannel 7
    		Case 5
    			ClearAllDigital
    			'Zahl 5
    			SetDigitalChannel 3
    			SetDigitalChannel 2
    			SetDigitalChannel 1
    			SetDigitalChannel 7
    			SetDigitalChannel 6
    		Case 6
    			ClearAllDigital
    			'Zahl 6
    			SetDigitalChannel 2
    			SetDigitalChannel 3
    			SetDigitalChannel 5
    			SetDigitalChannel 6
    			SetDigitalChannel 7
    			SetDigitalChannel 1
    		Case 7
    			ClearAllDigital
    			'Zahl 7
    			SetDigitalChannel 3
    			SetDigitalChannel 4
    			SetDigitalChannel 7
    		Case 8
    			'Zahl 8
    			SetAllDigital
    			ClearDigitalChannel 8
    		Case 9
    			'Zahl 9
    			SetAllDigital
    			ClearDigitalChannel 5
    			ClearDigitalChannel 8
    		Case Else
    			MsgBox ("Es wurde öfter als 9 mal gedrückt.")
    	End Select	
    end sub
    Viele Grüße, William
    -> http://william.thielicke.org/

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    12.05.2008
    Ort
    Kreis Heinsberg
    Beiträge
    20
    Hallo,
    das Problem dürfte bei der Deklaration der Funktion liegen. Die Karte funktioniert nur wenn der USB-Treiber (k8055f.dll in Systemverzeichnis von Winows) korrekt installiert ist und die nachfolgende Deklaration ausgeführt wird. Kannst die Zeilen einfach ins Formular einfügen und dann die Befehle ausführen.
    Open und Close Device beachten.
    Wird das Gerät nicht korrekt geschlossen, läuft der Treiber mehrfach und die USB-Routine funktioniert nicht mehr richtig.
    Code:
    Option Explicit
    '----------------------------------
    ' benötigte Deklarationen
    ' DLL laden für USB-Karte
    
    Dim DoNothing As Boolean
    Dim n As Integer
    Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Long) As Long
    Private Declare Sub CloseDevice Lib "k8055d.dll" ()
    Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long) As Long
    Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (Data1 As Long, Data2 As Long)
    Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long, ByVal Data As Long)
    Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Long, ByVal Data2 As Long)
    Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long)
    Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()
    Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
    Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long)
    Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Long)
    Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long)
    Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
    Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long)
    Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
    Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long) As Boolean
    Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Long
    Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Long) As Long
    Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Long)
    Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Long, ByVal DebounceTime As Long)
    Sollte es nicht gehen melde Dich noch mal.
    Gruß Hummel

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •