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
Webseite des Benutzers besuchen 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
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
Webseite des Benutzers besuchen 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
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
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Scetch in mehrere Scripte aufteilen? Lanzet3 7 343 13.08.2018 20:55
Letzter Beitrag: ardu_arne
  Analog Eingang _ Werte verfälscht Traktor 16 1.400 30.03.2018 08:36
Letzter Beitrag: Bitklopfer
  Mehrere Ausgänge mit einem Befehl auf High oder Low setzen dahans 1 1.311 10.01.2018 12:48
Letzter Beitrag: Tommy56
  Ampelschaltung mehrere Befehle möglichst gleichzeitig Jan5663 15 1.278 15.12.2017 15:46
Letzter Beitrag: Chopp
  Wie Programmiere ich mehrere if-Abfragen? Mr.Purz 7 1.589 12.12.2017 21:25
Letzter Beitrag: Tommy56
Question Mehrere HX711 an einem Arduino Nano Lambacher 59 6.790 17.10.2017 09:34
Letzter Beitrag: Tommy56
Lightbulb mehrere Funktionen mit Schalter mechastef 7 1.602 21.08.2017 22:34
Letzter Beitrag: SkobyMobil
Brick Welcher FTP Client um mehrere Dateien auf den Server zu schieben. derAllgaeuer 26 3.845 19.08.2017 21:27
Letzter Beitrag: Bitklopfer
  String vergleichen georg01 15 2.567 18.07.2017 20:35
Letzter Beitrag: Tommy56
  Countdown - Werte ändern am Touchscreen ElAleMaNo 2 770 04.07.2017 18:43
Letzter Beitrag: Tommy56

Gehe zu:


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