6 Taster / 3 x An|Aus

  • VB.NET

Es gibt 166 Antworten in diesem Thema. Der letzte Beitrag () ist von fraju.

    @ Fraju:

    Ich habe jetzt mal Pin 10 mit einem 33k an Pin 25 angeschlossen. In deinem Programm tut sich nichts 8|

    Da ich das mit den Dioden leider nicht verstehe kann ich doch auch statt 6 Taster ( 3 x "an", 3 x "aus" ) 3 Kippschalter verwenden, um meine 3 Timer zu starten bzw. zu stoppen oder ?

    Wenn ich - wie muss ich noch versuchen rauszufinden - etwa folgendes sage: " Wenn Pin 10 = verbunden mit Masse, dann timer1.start() sonst timer 1.stop() ". Wenn das ganze so ginge bräuchte ich ja auch nur 3 Eingänge 8o

    MfG. VB.Ghost

    VB.Ghost schrieb:

    Ich habe jetzt mal Pin 10 mit einem 33k an Pin 25 angeschlossen. In deinem Programm tut sich nichts


    Kann nicht funzen.
    Ob Kippschalter oder Taster,erst muß die Hardware stimmen.


    Verbinde Pin 2 mit 10.
    Wenn du Ausgabebit 1 setzt müssen 3,5-5V an Pin 2 anstehen.
    Bei Ausgabe L ca 0 V. gegen Pin25 Masse.
    Dein AbrageBit im Prog muß sich ändern.
    Wenn nicht Messen und Portadresse Kontrollieren.

    Du brauchst nur lesen was im Thread steht.

    P.S. Jetzt möchte ich aber eine Erfolgsmeldung.

    Gruß
    Ja in der Tat, jetzt habe ich folgende Änderungen:

    G2 Abfrage -> Kreuz bei 7 geht raus

    Zweite Reihe steht nun statt " 11111111 " , " FF ", "255" -> " 10111111 ", "BF", "191" .


    Was kann ich mit den Informationen jetzt machen ? Ich gehe davon aus, dass ich diese jetzt benutzen kann um zu prüfen ob ein Schalter geschlossen ist oder nicht. Aber wie verwende ich diese Infortmationen nun ? Timer schätze ich mal, aber wie lautet der Befehl, der abfragt ob der Schalter geschlossen ist oder nicht ?

    MfG. VB.Ghost

    // Edit: Dank dieser tollen Seite hier ( bastronik.zierath-software.de/index_Projekte.html ) habe ich es hinbekommen. Trotzdem vielen Dank :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB.Ghost“ ()

    Bau jetzt erst einmal deine Taster oder Schalter auf(Taster sind vielseitiger anzuwenden.)

    Erst 3 Taster ..Damit kann man auch vieles machen.

    § Eingangspins ,Taster daran ,andere Seite Masse/Minus./Pin 25.
    Dann testest du.
    Wenn keine Aktion im Prog,machst du an den Eing.Pin/taster deine 33K Wiederstände Dran,die Andere Seite an Pin2.
    Wieder Testen.

    Dann werden wir weitersehen.

    Gruß
    Wie oben im Edit schon geschrieben, also mit Schaltern hab ich es hinbekommen, das ist schon sehr schön...
    Dass ich es mit den Tastern und Dioden etc. nicht verstehe stört mich im moment eher weniger, also brauchst du auch - wenn du zur Zeit besseres zutun hast - nicht versuchen mir das noch 10 mal zu erklären, du hast mir schon genug geholfen ^^

    MfG. VB.Ghost
    Das ist im Grunde nicht unbedingt nötig, da alles genau auf der oben genannten Seite im Projekt " Die Druckerschnittstelle mal richtig erklärt " genau beschrieben ist.

    Versuche es jetzt doch noch einmal mit den Tastern.

    MfG. VB.Ghost

    //Edit: Ich habe es jetzt mit den Dioden probiert und es funktioniert auch ( genauso gemacht wie in der Zeichnung von Post 4 ).

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VB.Ghost“ ()

    VB.Ghost schrieb:

    Das ist im Grunde nicht unbedingt nötig


    Finde ich nicht,es ist Interessant wie Du es gemacht hast.
    P.S. Das dir einer die Druckerschnittstelle erklärt(Para),welche es schon fast nicht mehr gibt ,ist etwas viel verlangt.
    Es gibt hunderte Inet Seiten.

    Gruß

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fraju“ ()

    Folgendermaßen habe ich die 6 Taster abgefragt:

    VB.NET-Quellcode

    1. Private Sub Taster_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Taster.Tick
    2. If Inp(&H379) = 63 Then 'Taster 1.0
    3. If Timer1.Enabled = False Then
    4. Timer1.Start()
    5. Datenwert -= 1
    6. Datenwert += 8
    7. End If
    8. End If
    9. If Inp(&H379) = 255 Then 'Taster 2.0
    10. If Timer2.Enabled = False Then
    11. Timer2.Start()
    12. Datenwert -= 2
    13. Datenwert += 16
    14. End If
    15. End If
    16. If Inp(&H379) = 95 Then 'Taster 3.0
    17. If Timer3.Enabled = False Then
    18. Timer3.Start()
    19. Datenwert -= 4
    20. Datenwert += 32
    21. End If
    22. End If
    23. If Inp(&H379) = 191 Then 'Taster 1.1
    24. If Timer1.Enabled = True Then
    25. Timer1.Stop()
    26. Datenwert -= 8
    27. Datenwert += 1
    28. End If
    29. End If
    30. If Inp(&H379) = 31 Then 'Taster 2.1
    31. If Timer2.Enabled = True Then
    32. Timer2.Stop()
    33. Datenwert -= 16
    34. Datenwert += 2
    35. End If
    36. End If
    37. If Inp(&H379) = 223 Then 'Taster 3.1
    38. If Timer3.Enabled = True Then
    39. Timer3.Stop()
    40. Datenwert -= 32
    41. Datenwert += 4
    42. End If
    43. End If
    44. End Sub


    Das ganze mit folgendem Aufbau: img42.imageshack.us/img42/6377/lptdioden.png . Die Taster wurden so angeschlossen:

    Taster 1 -> 10 -> 63
    Taster 2 -> 11 -> 255
    Taster 3 -> 12 -> 95
    Taster 4 -> 10 + 11 -> 191
    Taster 5 -> 10 + 12 -> 31
    Taster 6 -> 11 + 12 -> 223


    Die LEDs habe ich folgendermaßen angesteuert:

    img517.imageshack.us/img517/5779/ltp2.jpg

    VB.NET-Quellcode

    1. Dim Datenwert As Integer = 7
    2. Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LED.Tick
    3. Out(&H378, Datenwert)
    4. End Sub


    Der Datenwert ändert sich, wenn einer der Taster gedrückt wird.

    Die Inpout32.dll wurde natürlich in den System32 Ordner kopiert und am Anfang deklariert.

    MfG. VB.Ghost
    ..sehr schön. ;)

    Jetzt vereinfache den Quellcode noch.

    z.B.
    Nur einmal den Port in eine Variable lesen.
    Dann mit Dieser weiter arbeiten.
    Aber mit case oder If elseIf else endif.



    Datenwert -= 1
    Datenwert += 8

    ..und dies geht bestimmt auch Anders.


    Gruß

    fraju schrieb:

    Datenwert -= 1
    Datenwert += 8

    ..und dies geht bestimmt auch Anders.
    Ja natürlich geht das noch anders, ich hätte zum Beispiel auch einfach Datenwert += 7 schreiben können. Aber so wie ich es gemacht habe funktioniert es genauso, und ich habe es deswegen nicht anders gemacht, weil das so logischer ist... LED mit "Datenwert" 1 geht aus und LED mit "Datenwert" 8 geht an... Für die die wissen, dass es so ist können es ja gleich ausrechnen, aber wenn ich mir das angucke weiß ich so sofort was passiert.

    Und ich hätte es natürlich sehr schön mit Select.. Case machen können.. das stimmt, fiel mir aber erst hinterher auf, weil ich noch nicht so unheinlich oft damit gearbeitet habe. Jetzt sehe ich die Vorteile der Select Case Abfrage :)

    MfG. VB.Ghost
    Hallo

    Eine schöne Aufgabe für den Anfang ist es auch ,mit 3 oder 5 Tastern ,eine Menüsteuerung aufzubauen.
    Dann mehrere Ebenen.
    Es werden doch immer Aufgaben(Projekte) gesucht.
    Wurde alles in grauer Vorzeit von Kindern und Jugendlichen gemacht.

    Die Variable so zu vereinfachen habe ich nicht gemeint.
    Für die Bestehenden Werte Konstanten einsetzen,mit deutlichen Namen.

    P.S. wenn du eine Autorennbahn hast ,kannst du jetzt auch Rundenzähler usw.
    Programmieren.


    Gruß
    Die Variable so zu vereinfachen habe ich nicht gemeint.
    Für die Bestehenden Werte Konstanten einsetzen,mit deutlichen Namen.
    Du meinst etwa so ?

    VB.NET-Quellcode

    1. Const LED1 As Integer = 63


    Hätte man machen können und wäre für Aussenstehende sicher einfacher meinen Quellcode zu verstehen... Habe ich jetzt garnicht dran gedacht Konstanten zu nutzen. Danke für den Tipp, werde ich das nächste mal sicher anwenden :)

    MfG. VB.Ghost

    // Edit: Wenn ich das ganze jetzt mit einer anderen Schnittstelle machen wollte, einer die etwas "moderner" ist, welche würdest du mir da empfehlen ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB.Ghost“ ()

    Alle anderen Schnittstellen kann man ohne Micro Controller quasi nicht verwenden. Da gibts dann aber z.B. auch fertige "Relaiskarten" mit unterschiedlichen größen und Bauteilen. Empfehlenswert ist bei so einer Karte USB, weil im Consumer-Bereich die letzten RS232 vermutlich auch bald aussterben werden bzw. händisch am Mainboard zu montieren sind / sein werden.
    Also wie ich gerade sah habe ich noch nicht mal eine Serielle. Nur USB :thumbdown:

    Was wäre denn die geschickteste Lösung ? USB -> Seriell -> Para hört sich etwas kompliziert an.

    MfG. VB.Ghost

    //Edit: Sowas in der Art hier funktioniert nicht oder ? Ich glaube ich las mal was, dass man da wirklich nur Drucker anschließen kann, die aber nicht irgend wie programmieren kann ?(
    amazon.de/USB-zu-parallel-LPT-…000WNZAFU/ref=pd_sim_pc_2

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB.Ghost“ ()

    VB.Ghost schrieb:

    Was wäre denn die geschickteste Lösung ? USB -> Seriell -> Para hört sich etwas kompliziert an.


    vb-paradise.de/index.php?page=…e69e347c7cc1a4ae10b991526
    Bitwackeln kommt vor den Controllereinsatz.
    Es gibt natürlich noch mehr Information.

    Für dein Projekt scheint USB To Seriell Wandler am besten geeignet.(5 Eus)

    Du kannst bei der seriellen ein Ausgang zur Spannungsversorgung Für deine Taster nutzen.
    Hier brauchst du aber die Widerstände.

    P.S. Teste es einfach
    Du kannst damit natürlich auch mehr machen.
    Gruß