- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Elegantester Weg für Wertvergleiche

  1. #1

    Elegantester Weg für Wertvergleiche

    Anzeige

    Praxistest und DIY Projekte
    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

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Schau dir mal den Befehl SELECT CASE an.

    Code:
    Select Case Widerstand
       Case 815 to 885
          ' Aktion 1
       Case 886 to 900
          ' AKtion 2
    End Select
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

  3. #3
    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

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Variante zum Schmunzeln:
    Code:
     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
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

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

12V Akku bauen