INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mehrere Werte "ungefähr" vergleichen
06.09.2018, 06:55
Beitrag #1
Mehrere Werte "ungefähr" vergleichen
Hallo Leute,

mal eine Frage an die versierten Programmierer. Ich komme irgendwie nicht zu einer praktikablen Lösung. Ausser mit einer Latte von if's.

Ich möchte drei Werte (Anzahl von gemessenen Impulsen) ungefähr vergleichen.
Also Beispiel: wert1 = 1000, Nun möchte ich einen Programmteil ausführen NUR DANN, wenn wert2 UND AUCH wert3 zwischen 990 und 1010 ist.

Wie kann ich das elegant lösen?

Gruß, Andreas

ARDUINO and amateur radio - a nice combination!
Andreas (OM Andy) DL1AKP / AB7VT

ARDUINO-Referenz Download unter:
https://www.arduinoforum.de/code-referenz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2018, 10:24
Beitrag #2
RE: Mehrere Werte "ungefähr" vergleichen
Hallo Andreas,
mehrere if's können in einer Zeile mit und/oder ect. kombiniert werden.
Das könnte für Deinen Fall dann so aussehen:
Code:
#define tol 10
int wert1;
int wert2;
int wert3;

void setup() {
}

void loop() {
  if ( wert2 >= wert1 - tol && wert2 <= wert1 + tol && wert3 >= wert1 - tol && wert3 <= wert1 - tol) {
    programmteil();
  }
}
"tol" ist dabei der ±Abstand zu wert1
programmteil(); wird nur dann ausgeführt wenn alle vier Bedingungen in if(...) erfüllt sind.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2018, 10:29 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2018 10:29 von Hilgi.)
Beitrag #3
RE: Mehrere Werte "ungefähr" vergleichen
Moin,


Grundlagen lernen bitte.


Code:
int wert1 = 1000;
int wert2 = 995;
int wert3 = 1000;


void setup()
{
  Serial.begin( 9600 );

  Serial.println( "Start");
}

void loop()
{
  if ( ( wert2 >= 990 && wert2 <= 1000 ) && ( wert3 >= 990 && wert3 <= 1000 ) )
  {
    deinprogramm();
  }
}


void deinprogramm()
{
  Serial.println( "Vorgaben erfüllt" );

  wert3 = 1050;
}



Gruß



______________________________
Tongue zu spät Big Grin

Nicht denken,...
...nachdenken... Rolleyes

Smarter - LiveData - KLAMM.de
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2018, 10:56
Beitrag #4
RE: Mehrere Werte "ungefähr" vergleichen
Moin Hilgi,
kennst du die Code-Referenz? Ist sehr empfehlenswert!!

Ich glaube kaum dass deine Empfehlung an deren Autor "Grundlagen lernen bitte." für ihn wirklich hilfreich ist.

Nicht denken,...
...nachdenken...Rolleyes
Sorry, das musste jetzt sein. Wink

(06.09.2018 10:29)Hilgi schrieb:  Moin,


Grundlagen lernen bitte.


Code:
int wert1 = 1000;
int wert2 = 995;
int wert3 = 1000;


void setup()
{
  Serial.begin( 9600 );

  Serial.println( "Start");
}

void loop()
{
  if ( ( wert2 >= 990 && wert2 <= 1000 ) && ( wert3 >= 990 && wert3 <= 1000 ) )
  {
    deinprogramm();
  }
}


void deinprogramm()
{
  Serial.println( "Vorgaben erfüllt" );

  wert3 = 1050;
}



Gruß



______________________________
Tongue zu spät Big Grin

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2018, 10:57
Beitrag #5
RE: Mehrere Werte "ungefähr" vergleichen
@ Hilgi:
1000 war nur ein Beispiel. Der wert1 kann jeden Betrag zwischen etwa 400 und ca. 7000 annehmen.
Genauso können auch wert2 und wert3 jeden beliebigen Wert annehmen. Und nur wenn alle drei zusammen in einem bestimmten Bereich zueinander sind, soll etwas passieren. Also alle drei ca.500 ist genauso ok wie alle drei ca. 6800...
Hat nichts mit Grundlagen lernen zu tun...

@ardu_arne:
Das ich so viele Vergleiche in einer if schreiben kann, wusste ich nicht.
Ich wollte es mit vielen if's machen und wenn das jeweilige if erfüllt ist eine Variable erhöhen. Wenn die Variable einen bestimmten Betrag erreicht hat, sind alle Bedingungen OK und ich kann mein Programmteil ausführen.
Aber so ist es einfacher.

ARDUINO and amateur radio - a nice combination!
Andreas (OM Andy) DL1AKP / AB7VT

ARDUINO-Referenz Download unter:
https://www.arduinoforum.de/code-referenz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2018, 11:00 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2018 11:01 von Hilgi.)
Beitrag #6
RE: Mehrere Werte "ungefähr" vergleichen
Das Bezog sich auf die Ausführung der "if", das sind für mich Grundlagen.
Wie ich rechnerisch einen Vergleich mache, so das es seine Vorgaben erfüllt, das ist Mathematik, aber wenn er 10 "if"s machen will, sollte er erstmal Grundlagen lernen finde ich.


Gruß

Nicht denken,...
...nachdenken... Rolleyes

Smarter - LiveData - KLAMM.de
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2018, 11:19
Beitrag #7
RE: Mehrere Werte "ungefähr" vergleichen
Ein if() liefert immer ein true oder false als Ergebnis über alle in der Klammer stehenden Abfragen.
Jede einzelne in der Klammer stehende Abfrage liefert für sich gesehen ebenfalls ein true oder false als Ergebnis. Diese Einzelergebnisse kann man dann mit boolschen Operatoren (&&, ||, &!, |!, u.s.w) zu einen Gesamtergebnis für if() auswerten.
In der Klammer selbst kann man auch Zeilenumbrüche schreiben. Dann stehen die einzelnen Abfragen im Programmcode nicht nebeneinander sondern untereinander. Das erhöht die Übersichtlichkeit und Lesbarkeit bei vielen Abfragen.
Code:
#define tol 10
int wert1;
int wert2;
int wert3;

void setup() {
}

void loop() {
  if ( wert2 >= wert1 - tol &&
       wert2 <= wert1 + tol &&
       wert3 >= wert1 - tol &&
       wert3 <= wert1 - tol) {
    programmteil();
  }
}

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2018, 14:04
Beitrag #8
RE: Mehrere Werte "ungefähr" vergleichen
@Hilgi:
Wieso 10 if's?
Also noch mal kurz, ich wollte es so machen:
Code:
if(wert2 >= wert1-10) flag++;
if(wert2 <= wert1+10) flag++;
if(wert3 >= wert1-10) flag++;
if(wert3 <= wert1+10) flag++;

if(flag == 4)
{
// Programmteil...
flag = 0;
}

Aber die "vielen" if's hintereinander sehen etwas "unästhetisch" aus, oder?
Das war der Grund meiner Frage. Ich wollte wissen, ob es etwas eleganteres gibt.
Wenn ich zehn Werte hätte, wären es noch mehr if's - sieht noch unästhetischer aus...

Da sieht das eine if, mit Zeilenumbruch, deutlich "schöner" aus.
Entschuldigung, wenn ich mich deutlich ausgedrückt habe, oder das Thema unnütz war.

Schönes Wochenende an alle.
Andreas

ARDUINO and amateur radio - a nice combination!
Andreas (OM Andy) DL1AKP / AB7VT

ARDUINO-Referenz Download unter:
https://www.arduinoforum.de/code-referenz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Mehrere LED's mit versch. Farben ansteuern Daiminium 15 513 06.08.2020 07:50
Letzter Beitrag: MicroBahner
  NodeMCU steuert Nano und sendet Werte an Maria DB daniel_hh 11 761 15.07.2020 15:26
Letzter Beitrag: Tommy56
  Mehrere Aktionen unterschiedlich oft mit While ausführen dreikommasieben 3 429 19.05.2020 17:11
Letzter Beitrag: dreikommasieben
  Wie mehrere Bedingungen in if-Definition einbauen? Gelegenheitsbastler 7 29.011 18.05.2020 09:53
Letzter Beitrag: SimonTau
  Array Werte in einen String ChriscoGT 3 481 12.05.2020 15:41
Letzter Beitrag: Tommy56
Question "Bobbycar LED" - 2 Fragen (Mehrere Taster: Unterprog. Abbrechen / Einfacher "Code" ?) KlausGuenther 13 1.290 19.03.2020 14:09
Letzter Beitrag: Tommy56
  Mehrere Taster/Schalter entprellen und verwalten MicroBahner 17 2.181 23.02.2020 17:38
Letzter Beitrag: MicroBahner
  struct-Objekt - Werte zuweisung zeigt merkwürdiges Verhalten Jan99 3 478 31.01.2020 12:10
Letzter Beitrag: Tommy56
  zwei Werte im Eeprom ablegen senseman 2 850 14.12.2019 22:50
Letzter Beitrag: senseman
  DS3234 Werte auf Nextion Kurt 10 1.222 01.12.2019 16:27
Letzter Beitrag: Kurt

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste