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

Hi, ich bin relertife neu in der ardoino welt und hätte eine frage
kan ich bei einer if bedinung den code erst ausfüren lassen wen2 bedinungen erfült sind?
// Vatiablen
int werd1;
int wert2;
void setup() {

}

void loop() {
if (werd1 > 155) and (werd2< 100);
{

  //code der zum aufüren ist
}


if(wert1 > 155);

{
if (werd2< 100);
{
//code der zum aufüren ist

}

}

}

Ja, denke schon.....

welche der beiden mitoden ist die richige?

Ausprobieren?

https://www.arduino.cc/reference/de/language/structure/boolean-operators/logicaland/

Dein Code compiliert nicht. Ohne Dir zu nahe zu treten und bitte auch nicht falsch verstehen: Möchtest Du die Variablen in Deinem Code evtl. in einer anderen Sprache ausschreiben? Dann tu es.

Womit wir direkt bei der zentralen Frage dieses Threads sind: Wie macht man es richtig?

// Vatiablen
int wert1;
int wert2;

void setup() {

}

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


  if (wert1 > 155) {
    if (wert2 < 100) {
      //code der zum aufüren ist
    }
  }
}

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