Code ausfüren wen 2 Bedinungen erfült sind(if)

Beide Varianten sind nicht falsch.
Ich würde eher noch einen Schritt zurück gehen und die Vergleichswerte als const definieren und darauf achten, auf welchen Wertebereich abgebildet wird.

Ein int kann auch negativ werden und braucht zwei bytes Speicher.
Bleibt der Wert im positiven Bereich? Kann der Wert größer 255 werden?

// Vatiablen
const unsigned int obererGrenzwert = 155;
const unsigned int untererGrenzwert = 100;
unsigned int wert1;
unsigned int wert2;

void setup() {

}

void loop() {
  if ((wert1 > obererGrenzwert) && (wert2 < untererGrenzwert)) {
    //code der zum aufüren ist
  }


  if (wert1 > obererGrenzwert) {
    if (wert2 < untererGrenzwert) {
      //code der zum aufüren ist
    }
    // Wenn auf den oberen Grenzwert noch ein weiterer
    // Vergleich folgt, dann hier abfragen
  }
}

hier siehst Du, was das mit dem const auf sich hat. Wenn Du oben einmal den Wert änderst, ist er im gesamten Code angepasst...

Danke vür deine hilfe .
Ich hab voher nichtz von const u. unsigned (const ="screibschutz"
unsigned= grösere >=255 unt nicht negertife)
wieder was gelerd :slight_smile:
Das mit dem einrücken habe ich gewust das ist beim kopiren pasiert

Eine normale Variable braucht RAM und der ist knapp. Bei const kann der Kompiler das besser optimieren und verbraucht in der Regel dafür keinen RAM.

Gruß Tommy

ich bin kein profi mir ist es wichtiger das dass Programm das tut was es soll optimirungen kan mann ihmer noch machen .der hinweis ist aber gut ubd ich hab wieder was gelernt das ist das wichtichste.

Es geht nicht darum, dass Du optimierst, sondern dass Du dem Kompiler die Chance gibst, das zu tun.
Gewöhne Dir bestimmte Regeln gleich von Anfang an an, dann hast Du es auf Dauer leichter:

  • const, was konstant ist (wie Pins)
  • unsigned, was nicht negativ werden kann
  • Variablen nur so groß (auf 8Bit-Prozessoren) wie nötig. Ein Pin kann nicht größer als 255 werden und nicht negativ, also byte (ist schon unsigned).

Alles int heißt, der Schreiber hat nicht darüber nachgedacht und verschwendet Speicher.

Gruß Tommy

Das ist ein überwiegend unterschätzter Irrglaube.
Schau Dir den Einsatz der constanten an.
Bei einem Dreizeiler geht das noch.

Es gibt ein schönes Beispiel, wie die Anforderungen und vor Allem der Code wachsen kann.

Einfach mal scrollen, nur scrollen. Irgendwo bei Anfang der 100er Replays wars eigentlich schon fertig. Jetzt sind wir bei weit über 400 :wink:

Wenn Du das von Anafng verkorkst, wird es ungleich schwer da später noch durchzusteigen.
Und Du suchst Dir einen Wolf, wenn Du einmal eine constante und einmal einen Wert zum vergleichen nutzt.

Ansonsten empfehle ich allen, die frisch einsteigen ein pdf eines Users, der auch mal angefangen hat und da sehr gut erklärt.
Jeden Abend zur Nacht ein wenig lesen, nicht auswendig lernen, nur wissen das da was drin steht, was man verwerten kann.
https://www.arduinoforum.de/code-referenz
Das pdf einfach runterladen.

Der Server ist z.Zt. Down - evtl. später versuchen.
@Tommy56 ist das nur temporär da drüben? Weisst Du was?
[edit]
danke Tommy, dann häng ich mal die letzte von mir genutzte Version aus dem April ran. Andreas war ja so nett das zu ermöglichen.
Arduino-Referenz-04.pdf (2,0 MB)

Meines Wissens sollte das ein Serverumzug werden.
Mein Forum habe ich damals mit 3 Stunden Auszeit umgezogen (allerdings vorher alles getestet). Ich weiß nicht, was da drüben so schief läuft, dass es so lange down ist. Infos gibt es auch keine.

Gruß Tommy

1 Like

Das klaub ich dir schon aber dieses skript Ist aber nicht sonderlich komplitzirt

Tipp: Nichts schlechtes angewöhnen! :wink:
Ich kann ein Lied davon singen...

Merk ich mir noch eine kleine Frage Dieses ; Kan mann das einstellen damit sich das automatisch setzt?

In der ArduinoIDE definitiv nicht.

ok weil ich neben her an ein skript arbeite und andauern diese Fehler melung aufgetaucht ist

Wenn Du Deinen Code in der gleichen Qualität schreibst, wie Deine Texte, wundere ich mich nicht, das der Kompiler laufend meckert :wink:

Gruß Tommy

ICH habe es nicht so mit rechtschreibung,mit einen hast du recht der kompilirer mechert und ich finde den Fehler nicht.

error: expected declaration before '}' token

}

^

exit status 1

Hallo
Dann zeige deinen Sketch, damit wir dir helfen können.

if ((wert1 > obererGrenzwert ) && (wert2 < untererGrenzwert)); {
//code der zum aufüren ist

 digetalWite(1,LOW);        //Hiel ist die zeile Rot
 digetalWite(2,LOW);

}
if (wer1 >obererGrenzwert){
digetalWite(1,LOW);
digetalWite(2,HIGH);
}
if (wer2 < untererGrenzwert){
digetalWite(2,LOW) ;
digetalWite(1,HIGH);
}

der Sketch läßt sich nicht übersetzen

Die Zeile enthält 1 Fehler:

Das ; nach der Bedingung schließt diese ab. Das was in {} steht, wird damit immer ausgeführt

Gruß Tommy

Ich hab die { jetzt in die näste zeile Geschoben und Der fehler ist noch da

Solange das ; da steht, ist es egal wohin Du die { verschiebst.
Ansonsten poste die vollständige Fehlermeldung.

Gruß Tommy