- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Wie kann ich in eine If einen Bereich auswerten?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317

    Wie kann ich in eine If einen Bereich auswerten?

    Anzeige

    E-Bike
    Hallo,

    ich stehe vor dem Problem das ich einen Bereich vom Empfängerimpuls auswerten und nun bestimmte Hebelstellungen abfragen muss.

    Da ja der Impuls von einem RC Empfänger immer etwas schwanken kann möchte ich für jede Stellung einen kleinen Bereich, in dem sich die ausgewertete Impulszeit bewegen darf, festlegen.

    Da aber in beide Steuerrichtungen ausgewertet werden soll kann ich folgende Möglichkeit nicht nutzen:
    Code:
     if ((impuls < 1550) | (impuls > 1490))
      {
       memory = 1;
      }
      else
       {
        memory = 0;
       }
    Wie kann ich nun meine If Schleife dazu bewegen nur auf den Bereich zwischen 1490 und 1550 zu reagieren?
    Denn wie sich (im nachhinein logischerweise) herausgestellt hat darf diese Schleife nicht auf Werte reagieren die über 1550 und unter 1490 liegen reagieren.
    Gibt es da eine Möglichkeit?

    Danke schon einmal
    mfG Henry

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    Logik ist alles...
    Du willst erkennen, wenn der Wert zwischen1490 und 1550 liegt. Das ist gleichbedeutend damit, dass der Wert größer als 1490 UND kleiner als 1550 ist. Das jetzt in Code zu übersetzen, sei deine Sache.

    PS: wer hat dir beigebracht, es gäbe "if-Schleifen"? DIE GIBT ES NICHT!

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.01.2007
    Beiträge
    134
    Dann aber bitte ein logisches UND ( || ) und kein binäres ( | ).

    Grüsse, Stefan

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    @geronet: ich glaube, du verwechselst da was:
    logisches UND ist &&
    logisches ODER ist ||

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317
    Zitat Zitat von uwegw
    PS: wer hat dir beigebracht, es gäbe "if-Schleifen"? DIE GIBT ES NICHT!
    Keiner, das verdrehe ich immer
    Das waren dann Abfragen? oder liege ich wieder Falsch?

    Leider sind beim probieren noch weitere Probleme aufgetaucht.

    Weii ich meine Variable "memory" auf 1 setze und dann auf memory = 1 abfrage klappt es nicht. erst wenn ich auf memory > 0 abfrage (zum Testen i.O. aber auf Dauer) dann hat es funktioniert.

    Das verstehe ich nicht gant memory ist als char declariert (hat aber auch mit int nicht geklappt. worann kann das denn wieder liegen?

    Danke für die Hilfe, das anfängliche Problem ist mit der Antwort schon einmal (einleuchtent) gelöst
    mfG Henry

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    das einfache = ist in C eine Zuweisung (egal wo es steht)...
    mit memory = 1 setzt du die Variable memory also auf 1.

    wenn du vergleichen willst, musst du == verwenden
    So viele Treppen und so wenig Zeit!

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317
    Ach so,

    ich brauch wohl noch ne Weile um mich mit C anzufreunden

    Aber durch die Zuweisung steht auch z.B. eine 6 drin wenn ich sie zuweise und dann mitt == auf 6 vergleiche, oder?

    Danke
    mfG Henry

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    Äh, was genau meinst du?

    Wenn du einer Variable mit = einen beliebigen Wert zuweist, dann hat sie danach natürlich diesen Wert.

    Und mit == kannst du prüfen ob irgendeine Variable irgendeinen bestimmten wert hat, das hat aber keinerlei Auswirkungen auf die Variable selbst.
    (der Ausdruck tmp == 6 wird "true" wenn tmp den Wert 6 hat, ansonsten ergibt dieser Ausdruck "false")
    So viele Treppen und so wenig Zeit!

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317
    Genau so meine ich das.
    Danke Dir noch einmal
    mfG Henry

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo, etwas offtopic, aber da fällt mir mal was ein

    Es ist sinnvoll sich so Sachen wie den Schwellwert und die Hysterese am Anfang des Programms zu definieren, das erleichert einem das Leben, wenn man später was ändern will, also z.B. anstatt von
    Code:
    if ((impuls > 1490) && (impuls < 1510))
    definiert man sich zum Anfang die Werte und arbeitet weiter mit den Konstanten
    Code:
    #define SCHWELLE 1500
    #define HYSTERESE 10
    ...
    ... 
    if ((impuls > SCHWELLE-HYSTERESE) && (impuls < SCHWELLE+HYSTERESE))
    Zugegeben, etwas mehr Text, aber Wenn Du die Werte mal ändern willst, brauchst Du das nur am Anfang bei define tun und brauchst nicht in Deinem Programm rumsuchen.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen