Zwei Schleifen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Domieos
User
Beiträge: 9
Registriert: Dienstag 18. Februar 2020, 20:43

Guten Abend zusammen, kann mir jemand helfen?
Leider geht dieses Programm nicht vollständig.
Die Steuerung der Lichter über die GPIO´s geht einwandfrei.
Doch das Speichern der Spannung in einem .txt Dokument klappt nicht

Code: Alles auswählen

#!/usr/bin/env python3
import time
from datetime import datetime as DateTime

import gpiozero
from RPi import GPIO

VOLTAGE_LOG_FILENAME = "/media/pi/dm/log_spannung"
INPUT_PIN_A = 35
INPUT_PIN_B = 29
OUTPUT_PIN_A = 36
OUTPUT_PIN_B = 32


def main():
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup([INPUT_PIN_A, INPUT_PIN_B], GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    GPIO.setup([OUTPUT_PIN_A, OUTPUT_PIN_B], GPIO.OUT)

    while True:
        GPIO.output(OUTPUT_PIN_A, GPIO.input(INPUT_PIN_A))
        GPIO.output(OUTPUT_PIN_B, GPIO.input(INPUT_PIN_B))

    adc = gpiozero.MCP3008()
    while True:
        now = DateTime.now()
        voltage = adc.voltage * 4.848
        line = (
            f"{voltage:.2f} Volt   Datum: {now:%d.%m.%Y}"
            f"         Uhrzeit: {now:%H:%M:%S}\n"
        )
        # print(line, end="")
        with open(VOLTAGE_LOG_FILENAME, "a", encoding="ascii") as file:
            file.write(line)

        time.sleep(30 * 60)


if __name__ == "__main__":
    main()
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Wann genau denkst du denn, wird diese Schleife verlassen?

Code: Alles auswählen

    while True:
        GPIO.output(OUTPUT_PIN_A, GPIO.input(INPUT_PIN_A))
        GPIO.output(OUTPUT_PIN_B, GPIO.input(INPUT_PIN_B)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Eine while True Schleife laeuft endlos. Ergo kann man dieser zwei in seinem Code nicht sinnvoll haben - nur eine kommt dran. Du musst also den Inhalt von Schleife eins in Schleife zwei stecken. Allerdings ist hier die Frage, wozu die erste Schleife beziehungsweise ihre Anweisungen ueberhaupt gut sind. Wenn du einfach nur einen GPIO Zustand als Eingang auf einen anderen als Ausgang legen willst - dann mach doch einfach eine Drahtbruecke.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Und das grundlegende Problem mit der Verständnis für Schleifen hattest du hier schon.
Was dort an Antworten im Bezug auf Schleifen stand, gilt natürlich auch hier.
Antworten