Funktion in der if Anweisung

Hey Leute , ich hab da folgendes problem und ich hoffe ihr könnt mir helfen =)
ich habe in der UNI ein IT Projekt indem man eine Heizungsregelung über 2 Arduino Boards machen muss... , das eine Board Simuliert das Haus und seine Umgebung ... das andere Board ist der Controller... jetzt zu meinem problem ... und zwar bekomme ich vom Haus einen momentanten Temperatur IST Wert Ich habe dann vorher einen Temperatur Soll Wert über die Console eingegeben ... und möchte dann bei annäherung an den Soll Wert die Leistung der Heizung herunter regeln ...

if (TempI > ISoll) // Wenn nur 100% von Soll Temp.
{
HLeistungSoll = 0;
}

if (TempI < 0.9ISoll) // Wenn nur 90% von Soll Temp.
{
HLeistungSoll = (40);
}
if (TempI < 0.85
ISoll) // Wenn nur 85% von Soll Temp.
{
HLeistungSoll = (50);
}
if (TempI < 0.8ISoll) // Wenn nur 80% von Soll Temp.
{
HLeistungSoll = (60);
}
if (TempI < 0.75
ISoll) // Wenn nur 75% von Soll Temp.
{
HLeistungSoll = (70);
}
if (TempI < 0.7ISoll) // Wenn nur 70% von Soll Temp.
{
HLeistungSoll = (80);
}
if (TempI < 0.65
ISoll) // Wenn nur 65% von Soll Temp.
{
HLeistungSoll = (90);
}
if (TempI < 0.6*ISoll) // Wenn nur 60% von Soll Temp.
{
HLeistungSoll = (100);

mein problem hierbei ist jetzt aber das es nicht so wirklich funktioniert... wenn ich statt 0.9*ISoll nun sagen wir 0,9.ISoll = 18 , nur die Zahl 18 angebe , funktoniert das ganze.... , genau so wenn ich nur an und ausschalten möchte... also TempI > Soll = Aus , TempI < Soll = AN

Aber ich möchte halt dass, das ganze iwie so geht :smiley: ich weiß ich könnte auch eine Funktion aufstellen und die Heizung danach regeln ... aber ich wollte was anderes machen ... (sind mehrere gruppen).

Ich hoffe ihr könnt mir helfen und entschuldigung für die Rechtschreibung ^^

Hä?

Ich verstehe nicht wie's denn funktioniert bzw was das Problem ist.

Grüße Uwe

Supertoy:
if ...

Unabhängig von allem Anderen: Ich versuche immer, meinen Code durch entsprechende Formatierung (Einrückung, Abstände) möglichst lesbar zu machen. Was Deinen Code angeht, würde ich statt mehrerer if-Anweisungen nur eine benutzen und den Rest mit „else if“ machen. Wenn Du das passend einrückst, liest Du da zukünftig schneller drüber weg.

Gruß

Gregor

Jetzt mal egal ob schön, oder wenigstens hübsch formatiert:

Wenn du definiert hättest, was zwischen 0.9 und 1.0 * ISoll passieren soll, wäre es vermutlich ok, da die vielen if in der Reihenfolge wie du sie hinschreibst, abgearbeitet werden und dadurch glücklicherweise
meist was sinnvolles rauskommt ( ausser zwischen 0.9 und 1.0 :wink: )

HLeistungSoll = (40);

Und was das mit einer "Funktion in der if Anweisung" zu tun hat, weiss ich auch nicht.
Die Klammern sind erlaubt aber wurscht.

ging mir einfach darum das

if >>>>(TempI < 0.65*ISoll) <<<<<< // Wenn nur 65% von Soll Temp.
{
HLeistungSoll = (90);
}
diese rechung halt nicht ausgewertet wurde nach unten hin , also jedes if abgearbeitet wurde...
hab das jz mal mit else gemacht , jetzt funktionierts =) obwohl es ja eig auch so gehen müsste .. naja es klappt :smiley: danke =)

Supertoy:
obwohl es ja eig auch so gehen müsste

Nein. Ganz einfach weil für jede Abfrage auch alle Abfragen darunter wahr sind. 0.60 ist auch kleiner aus 0.65 und so werden beide nacheinander ausgeführt.