PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Elegantester Weg für Wertvergleiche



Crashmichl
13.01.2006, 09:37
Hallo,

bin dabei mit meinem ATMega32 und einem KTY (81-120) Temperaturen zu messen. Will hierbei an Hand des Datenblattes die Steigungen zwischen den Werten der Tabelle benutzen.
Sprich:
0°C => 815 Ohm
10°C => 886 Ohm
Gemessen meinetwegen 823 Ohm.
Jetzt suche ich die eleganteste Möglichkeit für einen Algorithmus, der mir sagt, dass die 823 Ohm zwischen 815 und 886 liegen.
Dachte am Anfang, dass eventuell
if 815<widerstand<886 then
funktionieren könnte, tut aber nicht. Und mehrere if-Schleifen ineinander möchte ich eigentlich auch nicht machen.
Hat da vielleicht jemand eine zündende Idee?

Grüßle

Michl

oe9vfj
13.01.2006, 09:49
Schau dir mal den Befehl SELECT CASE an.


Select Case Widerstand
Case 815 to 885
' Aktion 1
Case 886 to 900
' AKtion 2
End Select

Crashmichl
13.01.2006, 10:16
Servus,

hab eben noch zwei weitere Möglichkeiten gefunden.
Einmal:
if widerstand > 490 and widerstand < 515 then
Dann grob geschrieben erst immer das höhere durchlaufen und dann zum unteren springen, aber die Case Möglichkeit sieht am besten aus.
Danke

Grüßle

Michl

PicNick
13.01.2006, 12:29
Variante zum Schmunzeln:


dim readx as byte
dim readv as word

reset tabelle
readv = 0
readx = 0
' find widerstand in tabelle---------------------------
while readv < Widerstand
read readv
wend
' der wievielte eintrag ist das ? ---------------------
readx = lookdown(readv, Tabelle, anz-entries)
' da spring ich hin -----------------------------------
on readx gosub act-1, act-2, .........act515, act 885
---etc. etc
' oder einen passenden wert suchen
readv = lookup(readx, tab2)

tabelle: 'sorted
Data nnn%, nnn%, nnn%, 815%, 885%, nnn%, nnn%
tab2:
data nnn%, nnn% ,................................



da fehlt noch drumherum, wenn der Widerstand > größter Tabwert usw.

Aber es is mal was anderes als Denkansatz