2 Werte vergleichen

guggug

Neues Mitglied
30. Jan. 2015
10
0
0
59
Sprachen
Hallo.. Ich habe Euch gewarnt.. Ich bin Anfänger ;)

Zu meiner Frage. Ich habe 2 Single Variablen mit Werten von 0 bis 5 Volt.
Ich möchte sowas in der Art haben.

Ist VariableA im Bereich von (VariableB +- 0.2V)

if VariableA >= (VariableB - 0.2) AND VariableA <= (VariableB + 0.2) then
gosub irgendwas

klappt irgend wie nicht?
Im Netz habe ich etwas gelesen das man nur eine Abfrage machen kann, also

if VariableA >=(VariableB-0.2) then
if VariableA <=(VariableB+0.2) then
gosub irgendwas
end if
end if

Beide Varianten klappen bei mir nicht. Mir scheint es liegt an der Berechnung in der Klammer.

Hat jemand einen Tip für mich?

Danke für Eure Geduld und Hilfe.

Gruß Dirk

Ohje Asche auf mein Haupt sehe gerade das ich im Falschen Bereich bin... Tut mir leid.
 
Hallo Dirk,

ich habe das Thema verschoben. Ich vermute es geht um Bascom, hier kann ich dir leider nicht helfen, aber wir haben hier ja einige User, die Bascom programmieren. :)

Dirk :ciao:
 
Hi Dirk,

Zu meiner Frage. Ich habe 2 Single Variablen mit Werten von 0 bis 5 Volt.
Ich möchte sowas in der Art haben.

Ist VariableA im Bereich von (VariableB +- 0.2V)

if VariableA >= (VariableB - 0.2) AND VariableA <= (VariableB + 0.2) then
gosub irgendwas

du hast also ein Spannungsfenster gegen das du vergleichen möchtest.

0V ...... B-0,2V .... B .... B+0,2V ....

Mit dem IF bist du schon auf dem richtigen Weg. Es gibt aber auch noch ELSIF. Damit kann man dann Kettenstrukturen aufbauen.

Grenze1 = VarB - 0.2
Grenze2 = VarB + 0.2
IF VarA < Grenze1 THEN .... (Unterhalb des Fensters)
ELSIF VarA > Grenze2 THEN .... (Oberhalb des Fensters)
ELSIF VarA >= Grenze1 THEN .... (im Fenster)

Wobei man das 3te auch als
ELSE .... (im Fenster)
schreiben kann da man die anderen beiden Möglichkeiten ja vorher schon eliminiert hat. Es bleibt dann ja nur noch diese eine Möglichkeit "im Fenster" übrig. Es kommt dabei immer auf die Reihenfolge der Vergleichsoperationen an.

Gruß
Dino
 
Hat zwar nichts mehr mit der eigentlichen Frage zu tun, aber müssen es denn unbedingt derlei genaue (komplizierte) Variablen sein? Woher erhältst Du denn den Spannungswert, der verglichen werden soll? Aus dem ADC (also einer vorzeichenlosen Ganzzahl)?
 
müssen es denn unbedingt derlei genaue (komplizierte) Variablen sein? Woher erhältst Du denn den Spannungswert, der verglichen werden soll?

Die Werte erhalte ich aus dem ADC, allerdings sind diese Werte nicht dazu da um damit zu messen, sondern sie sind nur dazu da um zu sehen ob die Strippen angeschlossen sind, da ja die Messtrippen als Antennen dienen und somit auf jeden Fall schon mal etwas angezeigt wird.
Vermeiden will ich das mit einem Widerstand der zwischen dem ADC und einem anderen Port liegt. Je nachdem wie ich den Port schalte bekomme ich Messwerte zwischen 0 und Referenzwert. Oder aber zwei Messwerte welche recht nahe beieinander liegen. Deshalb auch die +0.2 und -0.2 als Zugabe. Alle anderen Werte die weiter auseinander liegen werden von mir als Strippe nicht angeschlossen auf dem Display ausgegeben.

Gruß Dirk
 
du hast also ein Spannungsfenster gegen das du vergleichen möchtest.

Grenze1 = VarB - 0.2
Grenze2 = VarB + 0.2
IF VarA < Grenze1 THEN .... (Unterhalb des Fensters)
ELSIF VarA > Grenze2 THEN .... (Oberhalb des Fensters)
ELSIF VarA >= Grenze1 THEN .... (im Fenster)

Das muss ich gleich testen.

Danke für Deine Hilfe.
 
Hi Dirk,

Die Werte erhalte ich aus dem ADC, allerdings sind diese Werte nicht dazu da um damit zu messen, sondern sie sind nur dazu da um zu sehen ob die Strippen angeschlossen sind, da ja die Messtrippen als Antennen dienen und somit auf jeden Fall schon mal etwas angezeigt wird.

dann kannst du das statt mit Single-Variablen auch problemlos mit Word-Variablen (16Bit) und Integerarithmetik erledigen. Das entlastet den Prozessor ganz enorm und spart ne Menge Flash-Speicher.

Wenn zB ein ADC-Wert 576 identisch ist mit 2,75V in der Single-Variable, dann kann man auch mit 576 in einer Word-Variable rechnen. Rechne dir vorher die passenden Werte mit nem Taschenrechner oder ner Tabellenkalkulation aus und verwende dann die in deinem Programm.

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)