Ich versuche grundsätzlich ein einfaches Skript zu schreiben, das dem Lüfter (der an Pin 4 am GPIO angeschlossen ist) mitteilt, dass er bei einer bestimmten Temperatur einschaltet und wenn nicht, dann schaltet er den Lüfter aus. Ich beginne mit etwas Einfachem, nur um zu sehen, ob ich den Lüfter basierend auf der Temperatur steuern kann. Hier ist, was ich bisher:Wie kann ich einen Lüfter mit GPIO auf einem Raspberry Pi 3 mit Python steuern?
import os
from time import sleep
import signal
import sys
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
temp = os.popen('vcgencmd measure_temp').readline()
if temp > 65:
GPIO.output(4, True)
else:
GPIO.output(4, False)
Als ich dies ausführen, entweder es scheint zu laufen, aber der Lüfter schaltet sich nicht aus, auch wenn die Temperatur ist nicht annähernd das Niveau erreicht ich schrieb, oder es wird Sag mir, dass der Pin bereits benutzt wird, aber trotzdem weiter geht. In beiden Fällen läuft der Lüfter unabhängig von der aktuellen Temperatur.
vgencmd als zurückgibt: temp-37.0'C
Wie würde ich die nicht-numerischen Zeichen entfernen, damit ich mit einem int steckte? Als ich es ausführen ich diese:
ValueError: invalid literal for int() with base 10: "temp=37.6'C\n"
HINWEIS: Einige der importierten Module sind noch nicht in Gebrauch ist, das ist, warum sie dort sind.
Ich weiß nicht, ob dies alles reparieren, aber Sie müssen Temp in einen int konvertieren, bevor Sie es vergleichen . Probieren Sie: 'if int (temp)> 65:' Außerdem führen Sie nichts in einer Schleife aus, also wird es einmal ausgeführt und beendet. Versuchen Sie, die letzten 5 Zeilen (einschließlich der gelesenen Temp) innerhalb einer While-Schleife mit einer Verzögerung von etwa .1s – GRAYgoose124
auszuführen Dies ist kein Forum, Sie müssen sich nicht für Ihre mangelnde Erfahrung entschuldigen. Ich würde empfehlen, Ihre Frage zu vereinfachen und zu fragen, was Sie eigentlich erreichen möchten. "Wie steuere ich einen Lüfter mit GPIO auf einem Raspberry Pi 3". – Soviut
Bitte beachten Sie mein Update, wo ich 'measure_temp()' hinzugefügt habe. –