2 Taster und 4 Relais

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hi, brauch nochmal Hilfe.. Habe jetzt das halbe Internet durchforscht und nix passendes gefunden..
    Ich möchte 4 Relais über 2 Tastschalter schalten. Der Doppeltastschalter hängt in der Wand und die 4 Relais steuern 4 LED Strips. Habe nur bis jetzt noch nichts passendes gefunden, um das zu programmieren. Habs mit Python probiert und nur 1 Taster und 1 Relais, es geht nicht.. Das Relais schaltet beim Low-Signal. Manuell kann ich das Relais ansteuern, auch über Python, aber nicht im Zusammenhang mit dem Taster. Das ganze soll über eine Webseite auch jeden Strip einzeln ansteuern können, aber halt als Wechsel. Deswegen der Taster.

    2. Frage: würde das mit einem normalem Schalter gehen, dass der Pi sich merkt, in welches Stellung er war und da immer bei Signaländerung das Relais schaltet?

    Ich hoffe es ist verständlich..

  • Hallo,
    was funktioniert denn genau nicht?

    Zu 1)
    Ich würde das Programm folgender Maßen ändern:

    Hast du außerdem einen PullUP Widerstand verbaut? Also einen ca. 10kOhm
    Widerstand den du zwischen den GND und deinen Eingans-GPIO schaltest, damit der
    PI ein klar definiertes LOW-Level hat.

    Zu 2) Sollte gehen, probier aber erst mal das erste Problem zu lösen, helfe dir dann gerne beim weitern programmieren, solltes du sonstige Probleme haben.

    MfG ProfDrFisch


    Ein "Gefällt mir" oder eine Bewertung wäre nett. :danke_ATDE:

    Support per [PM]

    Einmal editiert, zuletzt von ProfDrFisch (10. Dezember 2014 um 18:36)

  • Das mit dem Widerstand dürfte das Problem gewesen sein.. Hab alelrdings nichts anderes als 4,7kOhm hier.. Müsste ich bis morgen warten..
    Es schaltet einfach nicht über den Taster :D
    Setze ich vorher das Relais auf HIGH und starte dann das Skript, wechselt das Relais..

    Einmal editiert, zuletzt von KaiStinson (10. Dezember 2014 um 18:32)

  • Was funktioniert denn nicht ?
    Also schalten die Relais nicht, oder wird der Tastendruck nicht erkannt ?
    Wäre gut zu wissen wo genau dein Problem liegt.

    Zum Quellcode:
    Die while 1 Schleife rauscht ziemlich stark durch wenn kein HIGH vom Pin 18 gelesen wird. Und bei jedem Durchlauf wird Pin 11 auf LOW gestellt. So eine unbegrenzte Schleife dürfte die alle verfügbare Prozessorleistung wegsaugen. Bau auf jeden Fall auch ein Sleep in die Schleife mit ein, und nicht nur im If.

    Zum Testen sind ein paar einfache nackte LEDs immer sehr praktisch. Einfach mit einem Experimentierboard und einem Widerstand an dein Ausgangspin stecken und ausprobieren ob da überhaupt geschaltet wird. Falls das so ist, dann ist auf der Seite schon mal alles in Ordnung.

    Das mit den 4 Relais und 2 Schaltern ist nicht ganz klar. Willst du quasi ein vor und zurück Taster bauen, so das du nacheinander durch die Relais schalten kannst ?
    Dann dürfte eine einfache Variable mit einem Integer drauf das einfachste sein. Wenn eine Taste drückst dann erhöhst du die Variable einfach oder verringerst sie um 1. Und in einer If-else Abfrage schaust du was in der Variable steht und schaltest entsprechend die Relais an/aus.

  • Er schaltet mit dem Tastendruck nicht.

    Es ist so geplant: 1 Taster wird gedrückt, 2 Relais ziehen an. Wird der 2. Taster auch gedrückt, schalten die anderen 2 Relais. Wenn ich dann allerdings über die Webseite die Relais anschalte, soll der Lichtschalter auch die Relais schalten können. Der Pi soll also eine Wechselschaltung machen können.. Das müsste doch mit dem Auslesen des Signals gehen, dass der dann einfach das Gegensignal sendet..

    Habe das Skript einfach geklaut, um es zu testen..

    Wiegesagt, Nackt schalten die Relais alle, auch über ne .sh Datei und über die Konsole, er nimmt einfach den Tastendruck nicht an.

    Ganz links ist der Schalter angeschloßen.. Oder hab ich einfach nur irgendwie den Schalter falsch angeschloßen? Ist der Widerstand zwingend notwendig? Hättejetzt nur einen 4,7kOhm Widerstand hier.

  • Ja, sleep sollte man auf jeden Fall einbauen, da sonst, spreche da aus eigener
    Erfahrung, wirklich sehr viel Prozessorleistung gezogen wird.
    Das mit dem Schalter würde ich so lösen, das du zwei Variablen hast,
    Eine ist am Anfang 0 (a), die andere wird aus dem Schalterstatus bezogen (b),
    dann:

    Code
    if a != b:
        a = b
        # Der weitere Code

    Dadurch wird, sobald die beiden Variablen unterschiedlich sind die If-Bedingung
    erfüllt und dann die beiden Variablen gleichgesetzt, dadurch wir die If-Bedingung
    bei jedem Umschalten erfüllt.
    Ist das verständlich? (Bin nicht so der Beste im erklären)

    MfG ProfDrFisch


    Ein "Gefällt mir" oder eine Bewertung wäre nett. :danke_ATDE:

    Support per [PM]


  • Dadurch wird, sobald die beiden Variablen unterschiedlich sind die If-Bedingung
    erfüllt und dann die beiden Variablen gleichgesetzt, dadurch wir die If-Bedingung
    bei jedem Umschalten erfüllt.
    Ist das verständlich? (Bin nicht so der Beste im erklären)

    MfG ProfDrFisch

    Äääähhm..... Vielleicht mit einem Beispiel!?:daumendreh2::helpnew:

  • Ja, meines Wissens nach, brauchst du den Widerstand,
    zum testen, sollte es auch mit dem 4,7 kOhm Widerstand gehen.
    Welches Kabel ist jetzt genau für was und an welchem GPIO ist es (deiner Meinung nach) angeschlossen?

    Ok, probieren wir erst mal den Schalter zum funktionieren zu bringen, dann beschäftigen wir uns weiter mit dem Programm, OK?

    MfG ProfDrFisch


    Ein "Gefällt mir" oder eine Bewertung wäre nett. :danke_ATDE:

    Support per [PM]

    Einmal editiert, zuletzt von ProfDrFisch (10. Dezember 2014 um 18:53)

  • Wenn die Relais in Ordnung prüf mal die Taster.
    Versuch einfach mal die Taster mit Strom an eine LED anzuschließen, wenn LED leuchtet bei Tastendruck sind die Mechanisch schon mal ok.
    Du kannst auch mal versuchen die GPIO States direkt aus der Konsole auszulesen wenn den Taster gedrückt hältst.

    z.B. für Pin 24:

    Code
    echo 24 > /sys/class/gpio/import


    Mit Taster gedrückt halten dann:

    Code
    cat /sys/class/gpio/gpio24/value
  • Puh, du solltest dir angewöhnen ein wenig detaillierter zu Schildern...
    Also du kriegst eine Ausgabe von "1". Was das bedeutet ist dir klar oder ?
    Das heißt an dem Pin ist ein HIGH. Ansonsten wäre die Ausgabe "0".
    Aber was ist "jetzt"? Also drückst du gerade auf den Taster, oder nicht ?
    Wenn du dabei grade drauf drückst, dann heißt das wohl das der Funktioniert.
    Wenn du dabei gerade nicht drauf drückst ist das sehr ungewöhnlich, da zu ja ein Signal bekommst obwohl du nicht auf den Taster drückst. Oder ist das kein Taster sondern ein Schalter ? Vielleicht hat der dann ein Kurzschluss ?

  • Hab nicht auf den Taster gedrückt, ist auch kein Schalter. Habe die Funktion mit LEDs und Taster probiert, funktioniert. Ich glaube, ich habe irgendwie ein Verdrahtungsproblem.. Aber egal, was ich versuche, irgendwie nimmt der kein Signal an..

  • Bild von der kompletten Verdrahtung, und nicht nur vom GPIO des RPi könnte dabei dann helfen.
    An welche Pins schließt du den Taster an ?
    Also so wie du ihn benutzen willst sollte ein Kabel an den 3.3V Ausgang (also links Oben, bzw Pin 1), das andere Kabel dann an den Eingangs Pin den du abfragen willst.

  • Würde da erst mal alle Kabel entfernen die du für den einfachsten Test nicht brauchst. Macht das ganze übersichtlicher.
    Wen du den Schalter-Pin einfach direkt mit einem Kabel ans 3,3V überbrückst, merkt es dann das Script ?
    Kontrollier mal ob du wirklich den richtigen Pin benutzt, also die Nummer. Kenne mich mit dem RPi Model nicht aus, hab nur ein paar B+ hier. Aber meistens wenn ich sowas hatte lag es daran das ich den falschen Pin benutzt hab.
    Versuch mal alle Pins aus zu schalten, dann den Pin den du als Eingang benutzen willst als Ausgang konfigurieren, auf HIGH setzen und eine LED dran hängen. So kannst du sehen ob die Nummer wirklich der Pin ist an dem du das Kabel anschließt.

    Falls du WiringPi installiert hast kann auch:

    Code
    gpio readall


    Helfen zu sehen welche Pins gerade an/aus sind.

    Einmal editiert, zuletzt von RyuKajiya (10. Dezember 2014 um 23:10)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!