Kann mir jemand mit meinem Arduino code helfen?
Hallo, ich habe ein Problem das mein Arduino Devkit code nicht wie gewünscht funktioniert und ich weiss nicht was ich jetzt noch machen kann.
Was ich im sinn hatte war das es so abläuft:
Mit einem Temperatur Sensor DHT22 (auf Pin 17) einen Fan (Pin 16) ansteuern. Der Fan wird Proportional zur Temperatur Aufsteigen oder Sinken.
Je nach Temperatur werden LEDs leuchten, der Sollwert kann Manuel über zwei knöpfe eigestellt werden. Der erste Knopf (Pin 2) erhöht den Sollwert um +1 und der andere Knopf (Pin 3) senkt den Sollwert -1 .
Wen 0-2 Grad über Sollwert leuchtet ein LED Grün (Pin 1), bei 5 Grad über Sollwert leuchtet ein anderes LED gelb (Pin 13), bei10 Grad über Sollwert leuchtet noch ein anderes LED rot (Pin 4) und ü. 15 Grad soll-wert blinkt es das rote LED und ein Buzzer (Pin 8) ertönt.
Es überprüft jede Minute die Temperatur. Auf dem Display wird der sollwert, die Temperatur, die Geschwindigkeit des Fans in Prozent und der status vom fan angezeigt (Aktiv oder Inaktiv).
Falls der Fan ein Problem hat seht auf dem Display: Status; Fehler beim Fan. Benutze anstatt analogwrite einfach ledcWrite.
Mein Problem ist nun das die Falschen LEDS leuchten und auf dem Display nur zahl:0 steht. Mit den Knöpfen kann ich da leider nichts ändern. Ich haben den ersten code selber geschrieben und den Zweiten wurde mir von ChatGPT geschrieben. Es funktionieren leider beide nicht. Hätte da jemand ein Verbesserungsvorschlag?
P.s ich bin noch ein Noob was das Programmieren betrift also erwartet nicht zu viel.
Freundliche grüsse
Mein Code:
ChatGPT code:
1 Antwort
- Der DHT22 liefert Temperatur und Fechte in einem seriellen Digitalformat. Es ist nicht sinnvoll den DHT-Pin mit AnalogRead abzufragen. Die Temperatur wird mit dht.readTemperatur() ausgelesen und ist in der FLOAT-Variablen b
- den map Befehl brauchst du wahrscheinlich gar nicht. Es reicht, wenn due die Variable b benutzt. Lass dir zu Testzwecken b auf der Seriellen Schnittstelle ausgeben
- Bei der If then Else Kette für die LED musst du auf >= abfragen nicht auf <=
- Für den map-Befehl um den Fan zu steuern musst du ggf. die Float-Variable in einen INT umwandeln (casting operator)