Lesen ob Stromkreis geschlossen ist mit C#

  • Hallo!


    Ich habe an einen Raspberry eine LED mit Widerstand angeschlossen. Diese lässt sich mittels eines C# Programmes und dem Nuget-Paket "System.Device.Gpio" problemlos ein und ausschalten. Jetzt möchte ich zusätzlich einen Taster einbauen. Im Programm soll erkannt werden ob der Taster gedrückt ist oder nicht bzw. ob der Stromkreis offen oder geschlossen ist. Mein Code sieht bis jetzt so aus:


    Angeschlossen ist das ganze an Pin 17 und 24. Leider wird mir im Programm immer "High" als Status angezeigt, egal ob der Taster gedrückt ist oder nicht. Hat jemand einen Tipp wo der Fehler liegt?

  • Moin spooky,


    wie setzt System.Device.Gpio denn Pin-Nummer zu GPIO um?

    Pin24 ist GPIO8 und auch SPI CS0 als Funktion.


    73 de Bernd


    //EDIT Eben erst gesehen. Du kann nur "1" auslesen. Du schaltest gegen Pin17 = 3,3Volt. Und du hast einen Pullup gesetzt.

    Schalte mal gegen Minus/GND!!

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

    Edited once, last by Bernd666 ().

  • Moin spooky,


    ich kommentiere mal die Zeilen.

    Code
    int pin24 = 24;
    
    GpioController controller = new GpioController();   // Zuweisung Klasse
    
    controller.OpenPin(pin24, PinMode.InputPullUp);   // Pin als Eingang und Pullup schalten
    
    controller.Write(pin24, PinValue.High);    // Und das schaltet Pin24 HIGH?? Was aber nicht gehen sollte, weil Eingang 
                                               // und darum überflüssig

    Zeigst du, bitte, mal den ganzen Code?!


    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Moin spooky,


    danke für den Code.


    Warum nutzt du in allen buttonX_Click den pin15 = 22? Aber auch in dieser Funktion:

    private void backgroundWorker1_DoWork.


    Beschreibe doch mal was du alles anschliessen willst.


    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Danke schonmal für deine Mühe ;)


    Ist eigentlich nur Copy und Paste. Ich weiß das der Code gekürzt bzw. stark vereinfacht werden kann. Aber für Testzwecke und weils schnell gehen sollte eben C&P.


    Ich brauche eigentlich nur den einen Taster. Die LED ist nicht wichtig.

  • Sry, ich glaube es macht keinen guten Eindruck wenn ich meinen Test Code mit den vielen unnötigen Buttons so einfach poste. Ich poste den Code deswegen nochmals so wie er ungefähr aussehen sollte wenn das ein fertiges Programm (GUI oder Konsole) werden sollte:


    Der Raspberry soll später einfach nur eine Meldung zB per Mail schicken wenn der Taster geschlossen ist. Das ganze würde ich gerne für längere Zeit in einer Dauerschleife so laufen lassen. Ich kann mir leider trotzdem nicht erklären warum das Programm den geschlossenen (Hardware) Taster nicht erkennt. Bei den Buttons lief alles einwandfrei, auch die LED lässt sich ein und ausschalten.

  • Post by Bernd666 ().

    This post was deleted by the author themselves: spooky hat es schon gemacht, was ich vorgeschlagen hatte. ().
  • Moin spooky,


    int pin15 = 22;

    Damit ist der Pin22(GPIO25) gemeint. Da hast du auch den Taster dran?

    Die andere Seite des Tasters geht an GND?

    Du drückst auch mal länger als eine Sekunde. So lang dauert die Pause!


    Ich habe hier keine Programmierumgebung für C#.


    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Taster und LED sind richtig angeschlossen. Im Terminal überprüft und da klappts.


    Ich bin draufgekommen was das Problem ist. Der Befehl


    Code
    controller.Read(pin15)

    liest nicht den Zustand des Pins aus, sondern nur die Pinnummer. Deswegen kommt immer true als Antwort zurück. Scheint mit C# nicht so einfach zu sein das auszulesen. Werde das ganze mit einen anderen Nuget Packet austesten. Für Device.Gpio finde ich leider nichts wies richtig gemacht wird.


    Trotzdem vielen Dank für deine Hilfe!

  • Hier wird die Installation samt Beispielcode für c# (und andere) gezeigt. Scheint aber schon ganz schön alt zu sein.

    Sieht aber vielversprechend aus...

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Moin spooky,


    keine Ahnung ob für dich das Thema noch aktuell ist..

    Aber was meintest du mit

    Bei den Buttons lief alles einwandfrei, auch die LED lässt sich ein und ausschalten.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.