Arduino Wertwechsel erkennen?


16.12.2019, 11:37

So ist dann die Lösung. Zuerst Globale Variable "float aktuelltemp;" initialisieren. (Auf dem Bild nicht zu sehen.)

Dann im Loop die if-Schleife anschreiben und am ende der if-Schleife mit aktuelltemp=Temp; die akteulle Temperatur mit der Temp des Sensors gleichsetzten. Dann wird auf dem Display nur bei Tempänderung überschrieben.

3 Antworten

Naja, Du setzt vor dem if ja aktuelleTemp auf Temp - somit gilt niemals aktuelleTemp != Temp. Du müsstest aktuelleTemp zu einer globalen Variablen machen und diese im if-Block setzen.

könntest du nicht (sofern du keine anderen Befehle ausführen willst außer Temperatur anzuzeigen) einfach eine Schleife machen, die danach testet, ob sich die Temperatur geändert hat?

also:

temp messen, in temp speichern

loop

wenn temp messen genau so groß wie temp: tue nichts

wenn nicht: erneuere die Anzeige

das wäre meine Idee, ich hoffe du kannst damit etwas anfangen :-)


ohwehohach  16.12.2019, 11:05

Das Wesen eines Arduino-Programms ist es gerade, dass die loop-Funktion wiederholt aufgerufen wird. Diese sollte auch relativ zügig abgearbeitet werden. Daher sollte in der loop-Funktion kein weiterer "Endlos"-Loop vorkommen.

1

Ja natürlich. if verzweigung undso.

Aber so gehts es natürlich nicht weil du in der zeile genau vor der if verzweigung doch aktuelltemp = Temp setzt, wie sollten die also dann nicht gleich sein?

Alternativ aktualisierst du den display einfach seltener. So, jede sekunde oder so.


IReIFoX 
Fragesteller
 16.12.2019, 11:24

Ja genau der Fehler ist mir auch gerade aufgefallen. Die if schleife sieht so aus: if(aktuelletemp != Temp){tft.fillRect(...);

tft.print(Temp);

.....

aktuelletemp = Temp;}

Manchmal scheiterts an den einfschsten Dingen :)

0