Wie erstelle ich Merker?

  • Hallo,  (Bearbeitet)

    Ich wollte ein Futterautomat für mein Hund bauen und habe ein paar fragen:

    Was soll er tun:

    Wenn GPIO.IN 26 (=Start) high ist: --- Warten bis das Start-Signal kommt

    --> Warten bis GPIO.IN 27 (= Futterschalle) low ist --- Soll schauen ob noch Futter in der Schalle ist wenn ja warten bis sie leer ist

    --> GPIO 23 wird auf high gesetzt --- Futterausgabe wird hierdurch gestartet

    --> Warte 10sek.

    --> GPIO 23 wird auf low gesetzt --- Futterausgabe wird beendet


    Meine Fragen:

    1. Das mit dem GPIO.IN 26 (= Start) das soll mal ersetzt werden in "Wenn 6:OO Uhr dann das was es jetzt gemacht hätte"

    Da weiß ich noch nicht wie ich dass umsetzten möchte.

    2. Ich weiß nicht ob ich das noch brauchen werde mit:"

    # GPIO Bezeichnung/- Definition

    Luftventil = 23

    GPIO_Merker_OUT = 24

    GPIO_Merker_IN = 25

    Start = 26

    Futterschalle = 27

    # GPIO Setup

    GPIO.setup(Luftventil, GPIO.OUT) # Pneumatisches Magnetventil

    GPIO.setup(GPIO_Merker_OUT, GPIO.OUT) # Vorübergehender Merker (OUT)

    GPIO.setup(GPIO_Merker_IN, GPIO.IN) # Vorübergehender Merker (IN)

    GPIO.setup(Start, GPIO.IN) # Vorübergehender Starter irgendwann wird er gegen ein Uhrzeitbefehl ersetzt

    GPIO.setup(Futterschalle, GPIO.IN) # Wenn Futterschalle noch befühlt ist ist der GPIO-PIN auf high und die nächste Ausgabe muss warten

    "

    Das sollen Merker werden wie bei einer SPS-Steuerung

    - Mit Merker meine ich wenn was passiert soll ein Wert auf 0 oder auf 1 gesetzt werden

    Den wert lesen dann andere Programteile aus.

    Ich muss sagen das ich nicht weiß ob ich das brauche weil ich sie auch auch direkt auslesen kann.


    Ich hoffe das ist jetzt besser verständlich

    Danke im voraus!

    3 Mal editiert, zuletzt von robin.heil (16. August 2021 um 16:29)

  • Du wirst dich vermutlich schwertun, hilfreiche Antworten zu bekommen.

    Zeile 30 deines Codes ist völlig zerschossen... da kann niemand sehen, was du eigentlich programmiert hast. Soll das eine Art Futterautomat werden?

    Dein Deutsch ist leider recht schlecht verständlich. Vielleicht kannst du dein ganzes Anliegen noch mal besser beschreiben. Ich verstehe leider gar nicht, was du mit " 'Start' führt etwas aus" meinst und was du erreichen willst, indem du GPIO.setup (Start, GPIO.IN) zu einer bestimmten Uhrzeit ersetzen willst.

    Die Setup-Funktionen werden nur einmal ausgeführt, um einzustellen, welche GPIOs Inputs oder Outputs sind. Im weiteren Programm brauchst du (abhängig von den Input-GPIOs und der Uhrzeit) immer nur die jeweiligen Output-GPIOs auf low oder high schalten.
    Die GPIOs, die du nicht brauchst, kannst du löschen. Wenn du sie später doch mal brauchst, fügst du die Zeilen halt wieder ein. Was du mit Merker meinst, hab ich nicht verstanden.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • robin.heil Ein Thread für deine Fragen wäre ausreichend gewesen:

    forum-raspberrypi.de/forum/thread/?postID=500549#post500549
    Dennis89
    15. August 2021 um 23:32

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Hallo,

    Zitat

    Also wenn eine bestimmte Uhrzeit ist soll das passieren was "Start" aktuell ausführt.

    `Start`führt bei dir aber gar nichts aus... `Start` ist bei dir eine Variable, an die ein Integer-Wert gebunden ist.

    Zitat

    Die Vorübergehenden Merker (GPIO 24-25)... ich weiß nicht ob ich die in diesem Skript noch verwenden werden aber

    "Merker" ist eine schräge Bezeichnung... Sowas gibt es im Python-Kontext nicht. Es gibt "nur" Variable. Das tolle bei Skripten ist ja, dass man dies mit einem normalen Editor editieren kann, sprich Zeilen löschen und hinzufügen. Und wenn man das Skript (neu) startet werden die neuen Zeilen mit ausgeführt.

    Gruß, noisefloor

  • "Merker" ist eine schräge Bezeichnung... Sowas gibt es im Python-Kontext nicht. Es gibt "nur" Variable.

    Glaskugel: Der OP macht gerade eine Ausbildung zum Elektriker. Merker kommt aus der SPS-Welt und ist nichts anderes als ein Speicherbereich im RAM des Controllers, den der Automatisierer nutzen kann. Es kann ein Boolean oder irgendein anderer Datentyp sein.

    Man kann Merker nicht mit Variablen vergleichen. Das sind zwei völlig verschiedene Konzepte.

    Die Bezeichnung Variable stimmt aber auch nicht so ganz für Python und ja, das Wort kommt sogar in der Dokumentation vor. Ich nenne die Variablen Namen. Namen, die auf Objekte im Speicher zeigen.

    Die Namen würde man in der SPS-Welt und auch in C, Pointer nennen. Die Pointer zeigen auf Objekte (Speicherbereiche).

    Bei der SPS muss man sich mit den Details beschäftigen, während man mit Python nur darauf achten muss, dass der Datentyp stimmt.


    Hier mal etwas abgeändert:

    Ich hoffe die Katzen bekommen genug Futter.

    2 Mal editiert, zuletzt von RestlessMud46765 (16. August 2021 um 16:01) aus folgendem Grund: setup_gpio() vergessen Oututs -> Outputs

  • Wie nennt man das eigentlich? CrowdCoding? Also wenn man programmiert, 100 Leute einem dabei zusehen und jeden Fehler sofort erkennen. und drauf hinweisen.

Jetzt mitmachen!

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