Hallo,
Ich muss für die Uni ein Programm schreiben, womit ich eine Temperaturveränderung vom Kühlschrank feststellen kann und diese in irgendeiner Form ausgeben. Ich habe bereits ein Programm geschrieben womit ich die Volts in Grad Celcius umrechne und eine LED bei einer bestimmten Temperatur leuchtet. Nun soll ich aber z.B. feststellen können, ob in den letzten 5 Minuten eine Temperaturveränderung stattgefunden hat (weil jemand den Kühlschrank offen gelassen hat oder anderes) und wenn ja, ob diese einen gewissen Wert überschritten hat. Daraufhin soll eine Ausgabe stattfinden zum Beispiel die LED blinkt und ist nicht durchgehend an. Jedoch weiß ich nicht wie ich an die Aufgabe ran gehen soll.
Ich bitte um eure Hilfe 
Hier der Code den ich bereits geschrieben habe:
const int KuehlschrankTemp = 6.0;
void setup() {
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (A0, INPUT);
Serial.begin(1200);
}
void loop() {
int Messwert = analogRead (A0);
Serial.print (" Messwert:");
Serial.print ( Messwert);
float Volt = (Messwert / 1024.0) * 5.0;
float temperatur = (Volt - 0.5) * 100;
Serial.print("Temperatur:");
Serial.println(temperatur);
if (temperatur >= KuehlschrankTemp + 2 && temperatur < KuehlschrankTemp + 4 ) {
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}
else if (temperatur >= KuehlschrankTemp + 4) {
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
else if (temperatur < KuehlschrankTemp + 2) {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
}
}
rammdon:
Nun soll ich aber z.B. feststellen können, ob in den letzten 5 Minuten eine Temperaturveränderung stattgefunden hat (weil jemand den Kühlschrank offen gelassen hat oder anderes) und wenn ja, ob diese einen gewissen Wert überschritten hat.
Mach mal Deinen Code schick - unten rechts unter deinem Post auf "modify", markier den Code und klick oben links auf </>
Deine Beschreibung ist noch zu ungenau.
Soll alle 5 Minuten nachgesehen werden oder permanent? Wenn permanent in welchem zeitlichen Abstand?
Das Stichwort dürfte Ringspeicher sein.
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.
Außerdem formatiere bitte den Code ordentlich (+T in der IDE hilft Dir dabei).
Gruß Tommy
my_xy_projekt:
Mach mal Deinen Code schick - unten rechts unter deinem Post auf "modify", markier den Code und klick oben links auf </>
Deine Beschreibung ist noch zu ungenau.
Soll alle 5 Minuten nachgesehen werden oder permanent? Wenn permanent in welchem zeitlichen Abstand?
Das Stichwort dürfte Ringspeicher sein.
Es soll permanent stattfinden und der zeitliche Abstand soll so 10 Sekunden sein. Tut mir leid falls es nicht so verständlich ist, kenne mich leider nicht so gut mit dem Thema aus.
Hi
int kann keine Kommastellen.
Auch solltest Du Dir angewöhnen, die 'magic numbers' aus Deinem Code heraus zu bekommen.
Die Pins 2,3,4 sind wohl Ausgänge, A0 der Mess-Eingang.
const byte pinsensor=A0; //Anschluss TMP36
const byte pinGN=2; //Anzeige 'Alles OK'
const byte pinGE=3;
const byte pinRO=4;
(oder so)
KuehlschrankTemp ist wohl die Soll-Temperatur, je nach Abweichung soll hier wohl eine der LED leuchten.
WAS funktioniert bis jetzt so, wie Du Das willst?
WO hast Du Probleme/reagiert der Sketch anders, als Du Das geplant hast?
MfG
postmaster-ino:
Hi
int kann keine Kommastellen.
Auch solltest Du Dir angewöhnen, die 'magic numbers' aus Deinem Code heraus zu bekommen.
Die Pins 2,3,4 sind wohl Ausgänge, A0 der Mess-Eingang.
const byte pinsensor=A0; //Anschluss TMP36
const byte pinGN=2; //Anzeige 'Alles OK'
const byte pinGE=3;
const byte pinRO=4;
(oder so)
KuehlschrankTemp ist wohl die Soll-Temperatur, je nach Abweichung soll hier wohl eine der LED leuchten.
WAS funktioniert bis jetzt so, wie Du Das willst?
WO hast Du Probleme/reagiert der Sketch anders, als Du Das geplant hast?
MfG
KuehlschrankTemp IST die Soll-Temperatur, die LEDs leuchten auch je nach Abweichung der Temperatur richtig. Jetzt soll ich aber wenn die Temperatur aus irgendeinem Grund ansteigt Darstellen, dass eine Temperaturveränderung stattfindet bzw. stattgefunden hat. Zum Beispiel soll eine LED nun blinken wenn der Wert in den letzten 5 Minuten von 6°C auf z.B. 12°C gestiegen ist. Dazu muss ich den Wert den ich beim Start der Messung gemessen habe, mit dem Wert den ich nach 5 Minuten gemessen habe vergleichen und auswerten. Außerdem soll das Programm nach 5 Minuten nicht einfach aufhören, sondern durchgehend weiterlaufen.
Hi
Wie oft soll innerhalb der 5 Minuten gemessen werden?
Da wir ja den Messwert 'von vor 5 Minuten' brauchen, müssen wir uns Diesen speichern.
Wenn wir nur alle Minute messen, brauchen wir 5 Speicherstellen.
Halbminütlich 10, sekündlich 300.
Allerdings wollen wir wohl kein Rumgeblinke, wenn die Temperatur mittlerweile wieder 'im grünen Bereich' ist, oder?
Schreibe GENAU auf, WAS Du WANN willst, möglichst fein aufgedröselt.
DAS kann man dann 'nachbauen' - wenn einer der Brocken sich so noch nicht in Code gießen lässt, ist das Problem noch nicht fein genug zerkleinert.
MfG
postmaster-ino:
Hi
Wie oft soll innerhalb der 5 Minuten gemessen werden?
Da wir ja den Messwert 'von vor 5 Minuten' brauchen, müssen wir uns Diesen speichern.
Wenn wir nur alle Minute messen, brauchen wir 5 Speicherstellen.
Halbminütlich 10, sekündlich 300.
Allerdings wollen wir wohl kein Rumgeblinke, wenn die Temperatur mittlerweile wieder 'im grünen Bereich' ist, oder?
Schreibe GENAU auf, WAS Du WANN willst, möglichst fein aufgedröselt.
DAS kann man dann 'nachbauen' - wenn einer der Brocken sich so noch nicht in Code gießen lässt, ist das Problem noch nicht fein genug zerkleinert.
MfG
Okay, gut dass du das gefragt hast. Ich war mir bis selber grade nicht wirklich sicher was ich eigentlich will, jetzt wo ich nochmal intensiv drüber nachgedacht habe bin ich zu dem Entschluss gekommen, dass ich eigentlich unbegrenzt (in 10 Sekunden Intervallen)messen möchte. Dabei möchte ich immer wieder den zuletzt gemessenen Wert mit dem von vor 2 Minuten vergleichen. Wenn nen Temperaturunterschied von > 4°C stattgefunden hat soll eine Ausgabe erfolgen (z.B. LED blinkt).