[ erledigt ] Operator nicht ( ! )

Hallo,
ich möchte das Zeichen "5" darstellen, wenn sich der Wert zwischen
40 und 45 bewegt, ist er kleiner oder größer, soll nichts dargestellt
werden.
Ich weiß nicht, wo ich den Operator "!" noch setzen soll.

Es gibt auch "constrain"- das läßt sich aber nicht mit true/false abfragen.
Gruß und Spaß
Andreas

if ((hum < 40) || (hum > 45))
   {
     lcd.setCursor(3, 2);
   lcd.write(5);
   }
   else
   {lcd.setCursor(3, 2);
   lcd.print("");
   }

SkobyMobil:
ich möchte das Zeichen "5" darstellen, wenn sich der Wert zwischen
40 und 45 bewegt, ist er kleiner oder größer, soll nichts dargestellt
werden.

Das ist wahrscheinlich eine falsche Beschreibung dessen, was Du eigentlich möchtest.

Wenn ich mal raten soll, möchtest Du eigentlich:

"ich möchte das Zeichen "5" darstellen, wenn sich der Wert zwischen
40 und 45 bewegt, ist er kleiner oder größer, soll ein eventuell angezeigtes Zeichen mit einem Leerzeichen überschrieben werden".

Die Logik wäre in dem Fall, nicht "nichts" auszugeben, sondern ein Leerzeichen " ", mit dem das vorhandene Zeichen auf dem Display überschrieben wird.

Meines Erachtens brauchst du eine AND-Verknüpfung, die mit && gemacht wird.
Du möchtest ja, dass der Wert zwischen 40 und 45 liegt.

"nicht kleiner als 40 oder nicht größer als 45" ergibt als Lösung alles. Da braucht es ein UND.
Größer gleich 40 und kleiner gleich 45.
Grüße Uwe

Hallo,
also-
zeige das Zeichen wenn der Wert größer als 40 ist.
zeige das Zeichen wenn der Wert kleiner als 45 ist.

zeige das Zeichen nicht, wenn der Wert kleiner als 40 ist.
Zeige das Zeichen nicht, wenn der Wert größer als 45 ist.

Oder einfach.
Zeige das Zeichen nur wenn der Wert zwischen 40 und 45 ist, sonst nicht.

constrain 40, 40, 45

zeigt bei Wert 38 eine 40 an
zeigt bei Wert 49 eine 45 an
zeigt bei Wert 42 eine 42 an

hier wäre eine bestimmte Bedingung erfüllt, die sich aber nicht abfragen läßt

Deswegen bin ich auf den nicht ( ! ) Operator gekommen.
wenn der Wert NICHT kleiner als 40 ist zeige Zeichen
wenn der Wert NICHT größer als 45 ist zeige Zeichen

"Größer gleich 40 und kleiner gleich 45"

größer gleich 40…. zeigt doch alles an, was größer als 40 ist, also auch 46
kleiner gleich 45… zeigt doch alles an, was kleiner als 45 ist, also auch 39
oder habe ich das einen Denkfehler?

Gruß und Spaß
Andreas

SkobyMobil:
"Größer gleich 40 und kleiner gleich 45"

größer gleich 40…. zeigt doch alles an, was größer als 40 ist, also auch 46 //Ja, stimmt...
kleiner gleich 45… zeigt doch alles an, was kleiner als 45 ist, also auch 39 //Ja, stimmt auch...
oder habe ich das einen Denkfehler?

Du hast das UND ( && ) nicht bedacht.

Also zeige das Zeichen wenn grösser gleich 40 UND kleiner gleich 45.
Es müssen also beide Bedingungen erfüllt sein, damit das Zeichen gezeigt wird.

Grüsse
Peter

ausserdem ist zu beachten, dass
lcd.write(5);
keine "5" ausgibt, aber zulässig ist.
Fast alles andere liefert übrigens irgendwie das gewünschte Ergebnis:
Nachtrag: s. später: falsche Annahme, dass eine '5' das Ergebnis ist das du sehen willst

lcd.print(5);
lcd.write('5');
lcd.write("5");
lcd.print('5');
lcd.print("5");

lcd.print(""); // macht übrigens gar nichts
if ((hum < 40) || (hum > 45))

{
    lcd.setCursor(3, 2);
  lcd.write(5);
  }
  else
  {lcd.setCursor(3, 2);
  lcd.print("");
  }

Wenn kleiner als 40 oder grösser als 45 scheint für mich genau das Gegenteil zu sein, von dem, was du im Einleitungstext in Worten beschreibst.

Hätte eher auf sowas getippt. Oder ich habe dich total falsch verstanden :confused:

if ((hum > 40) && (hum < 45))
   {
     lcd.setCursor(3, 2);
   lcd.print(5);
   }
   else
   {lcd.setCursor(3, 2);
   lcd.write(" ");
   }

Hitsuji:
Hätte eher auf sowas getippt. Oder ich habe dich total falsch verstanden :confused:
...

So offen wollte ich es nun auch wieder nicht sagen. Wollte daß SkobyMobil seine Grauen Zellen abrichtet :wink: :wink: :wink:
Grüße Uwe

Hallo,
mmh, wenn ich mir das mit dem "&&" so durchlese, dann weiß ich nicht, warum
ich nicht selbst drauf gekommen bin. Zumal ich das selbst im Sketch schon
angewendet habe.
Ich habe wohl Blubbels in der Birne gehabt.
Schönen Dank dafür.

so sieht es aus und funktioniert, das löschen des Zeichen erfolgt an anderer
Stelle, weil die Stelle "doppelt" mit Zeichen belegt ist.

Code:

 if ((hum >= 40) && (hum <= 43)) 
   {
     lcd.setCursor(13, 1);
   lcd.write(5);
   }

"5" ist, Wert wird gleich überschritten
"6" ist, Wert ist überschritten

Gruß und Spaß
Andreas
P.S.
hier die "5"

byte VAlarm[8] =
{
B00000,
B01110,
B10001,
B10101,
B10001,
B01110,
B00000,
B00000
};

lcd.createChar(5,VAlarm);

hier die "6"

byte Alarm[8] =
{
B00000,
B01110,
B11111,
B11111,
B11111,
B01110,
B00000,
B00000
};
lcd.createChar(6,Alarm);

P.S.
hier die "5"

Dass das Absicht ist, kann man bei einem der && und || verwechselt, ja nicht ahnen :wink: :wink: ;')
Na ja, warum du ausgerechnet eine '5' sehen wölltest, hätte mir zu denken geben können :stuck_out_tongue:
Schöner als eine '0' ist dein Spezialzeichen allemal.

Aber dass du dir

   lcd.print("");

sparen kannst, und evtl. den ganzen else - Zweig, lass ich mal stehen ...

Hallo,
"else und print" habe ich heute vernichtet.
Gruß und Dank
Andreas