Go Down

Topic: Mehrere Funktionen Gleichzeitig? (Read 1 time) previous topic - next topic

curler

Quote
Wo ist das Problem ?
Das Problem ist, dass ich es bisher über folgende Bedingung versucht habe:

Code: [Select]
if (Temp>35) {
digitalWrite(41,HIGH);
} else {
digitalWrite(41,LOW);


Bei der tut sich aber leider gar nichts.

Nun habe ich deine "if - only" Variante versucht. Aber leider funktioniert das auch nicht.

Das Relay ist einfach entweder an oder aus. Wenn ich Die Temperatur verändere gibt es keine Reaktion...

combie

#46
Mar 19, 2017, 01:15 pm Last Edit: Mar 19, 2017, 01:19 pm by combie
Dann machst du mit  Temp,  oder dem Pin,  was falsch.

Was?
KA, in deinem letzten Sketch sehe ich kein Temp.

Tipp:
In den meisten Fällen, ist es sinnvoll, eine Hysterese einzuführen.

Tipp 2:
Diesen Ausdruck kannst du vereinfachen:
Code: [Select]
if (Temp>35) {
digitalWrite(41,HIGH);
} else {
digitalWrite(41,LOW);

Zu:
Code: [Select]
digitalWrite(41,Temp>35);
Aber leider auch wieder ohne Hysterese.
Irren ist menschlich.
Im Irrtum verharren ist Dummheit!

michael_x

Quote
Das Relay ist einfach entweder an oder aus
Ich denke auch, das muss irgend was ganz blödes sein:
Hast du evtl. nicht an Pin 41 angeschlossen?

Sonst kannst auch noch mehr Serial.println Testausgaben einbauen ...

curler

#48
Mar 20, 2017, 12:03 am Last Edit: Mar 20, 2017, 12:09 am by curler
Dann machst du mit  Temp,  oder dem Pin,  was falsch.

Was?
KA, in deinem letzten Sketch sehe ich kein Temp.

Tipp:
In den meisten Fällen, ist es sinnvoll, eine Hysterese einzuführen.

Tipp 2:
Diesen Ausdruck kannst du vereinfachen:
Code: [Select]
if (Temp>35) {
 digitalWrite(41,HIGH);
 } else {
 digitalWrite(41,LOW);

Zu:
Code: [Select]
digitalWrite(41,Temp>35);
Aber leider auch wieder ohne Hysterese.

Ad 1:

Hysterese ist super Idee. Um die werde ich mich kümmern sobald ich weiß warum ich keine Schaltung habe.

Ad 2:

Ausdruck vereinfacht, jedoch immer noch keine Funktion.


An Pin 41 ist es angeschlossen. Habe ich jetzt nochmals überprüft. Wenn ich digitalWrite(41,HIGH);  eingebe reagiert das Relay und schaltet wie es soll.

Ich glaube es hängt damit zusammen, dass es die Variable "temp" nicht erkennt in meinem Sketch.
Leider ist mir aber nicht ganz klar wie ich eine Beziehung herstellen kann. Da ich es ja auch geschafft habe über thermocouple.ReadCelsius die Temp am LCD darzustellen.





combie

Nunja...

Eine "gute" Vereinfachung ist meist eine Vereinfachung, unter Beibehaltung der ursprünglichen Funktionalität.
Hier einer Nichtfunktionalität.

Quote
Ich glaube es hängt damit zusammen, dass es die Variable "temp" nicht erkennt in meinem Sketch.
Das dürfte ein Sichtbarkeitsproblem sein...
Irren ist menschlich.
Im Irrtum verharren ist Dummheit!

michael_x

In deinem letzten Sketch #43:  2017-03-18, 16:54:33 
ist zwar eine Variable   float temp; drin, die aber nie verwendet wird. Weder beschrieben noch in einem if abgefragt.

Als globale Variable ist sie erstmal mit 0.0 definiert, was für stabile Verhältnisse sorgt. ;)

curler

Ja. Aber wie kann ich "temp" näher beschreiben?

Ich möchte einfach dass die variable "temp" - der Wert von thermocouple.readCelsius ist. ODER?

Aber es scheint nicht so einfach zu sein, wie ich mir das vorstelle...

combie

#52
Mar 21, 2017, 05:28 am Last Edit: Mar 22, 2017, 03:09 pm by combie
Quote
Aber es scheint nicht so einfach zu sein, wie ich mir das vorstelle...
Ja, nicht einfach so... oder durch Telepathie..
Aber z.B. durch Zuweisung..

Hier ist schon mal eins der Probleme:
Mal sagst du "temp", und mal "Temp".
Ich würde mich da entscheiden!
Irren ist menschlich.
Im Irrtum verharren ist Dummheit!

michael_x

#53
Mar 21, 2017, 12:39 pm Last Edit: Mar 22, 2017, 03:07 pm by michael_x
Quote
Ich möchte einfach dass die variable "temp" - der Wert von thermocouple.readCelsius ist.
In C++ geht das am einfachsten so

statt deiner Zeile   Serial.println(thermocouple.readCelsius());
Code: [Select]
...
temp = thermocouple.readCelsius();
Serial.println(temp);
...




curler

Ich möchte einfach dass die variable "temp" - der Wert von thermocouple.readCelsius ist.

In C++ geht das am einfachsten so

statt deiner Zeile   Serial.println(thermocouple.readCelsius());
Code: [Select]
...
temp = thermocouple.readCelsius();
Serial.println(temp);
...

DANKE - genau das wars. Bin so happy. Jetzt mal weiter bis zu nächsten Hürde! -melde mich ;)

michael_x

Quote
DANKE - genau das wars. Bin so happy. Jetzt mal weiter bis zu nächsten Hürde! -melde mich
;) Herzlichen Glückwunsch!

Wie das mit Variablen ist und was ein Gleichheitszeichen beim Programmieren bedeutet, gilt übrigens für alle Variablen.


Mal sehen was deine nächste Hürde sein wird. Vielleicht kriegst du ja auch ein paar Sachen alleine raus :)

Go Up