-
        

Ergebnis 1 bis 3 von 3

Thema: If...Else und Bereichsauswahl

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2006
    Beiträge
    27

    If...Else und Bereichsauswahl

    Anzeige

    Hallo Leute

    ich hab mal wieder Probleme mit meinem Basic Quellcode.... der will mal wieder nicht so wie ich will...

    Also ich bin immern och bei meinem Projekt, mit einem Sensor eine Winkelmesseinrichtung mithilfe des MLX 90316 zu bauen.

    So, nun möchte ich gerne, dass mir der Controller nicht nur eine Gradanzeige ausgibt, sondern auchdie ausgesprochenen Windrichtungen, so wie norden, süden, etc.
    das heißt ich muss ja bestimmt bereiche als norden, als süden, usw. deklarieren. ich habe mal versucht das mit deinem riesigen if...else gebilde zu realisieren, aber funktionieren tut es nicht.
    außerdem hab ich dann ein problem mit Norden. Da geht es von 337.5 bis 360 und dann von 0 bis 22.5 grad. wie soll ich ihm denn die 2 sachen in eine bedingung packen? oder muss ich die wieder in 2 aufteilen....

    wäre schön wenn ihr mir da helfen könntet

    hier noch schnell meinen quellcode

    Code:
     Config Adc = Single , Prescaler = Auto , Reference = Avcc  'Konfiguriert den AD Wandler
    
     Start Adc                                                  'Startet den AD Wandler
    
     Config Pinc.2 = Input                                      'ADC 2 an Ctrl
    
     Dim Sensor As Long                                         'Deklariert "Sensor" als Long mit 4 Byte Zeichenvorrat
     Dim Grad As Single                                         'Deklariert die Gradvariable "Grad" als Single
    
    
       Do                                                       ' Beginnt die Abfrageschleife zur Werteerfassung
    
          Sensor = 0                                            'Initialisiert die Variablen Sensor, Grad
          Grad = 0
    
          Sensor = Getadc(2)                                    'Der AD Wert wird am Pin C2 abgelesen und in die Veriable "Sensor" geschrieben
    
          Grad = Sensor * 360
          Grad = Grad / 1024
    
          Grad = Grad * 100
          Grad = Fix(grad)
          Grad = Grad / 10
          Grad = Round(grad)
          Grad = Grad / 10
    
          Print "Sensor (dezimal) : " ; Sensor
          Print "Grad: " ; Grad
    
          'Hierhin kommt die Anzeige der Ausgesprochenen Windrichtung (NOSW)
    
          If Grad = 337.5 To 360 Then                           ' Grad = 0 To 22.5 Then
    
             Print "Norden"
    
          Else
    
             If Grad = 22.6 To 67.5 Then
    
                Print "Nord/Ost"
    
             Else
    
                If Grad = 67.6 To 112.4 Then
    
                   Print "Osten"
    
                Else
    
                   If Grad = 112.5 To 157.4 Then
    
                      Print "Sued/Ost"
    
                   Else
    
                      If Grad = 157.5 To 202.5 Then
    
                         Print "Sueden"
    
                      Else
    
                         If Grad = 202.6 To 247.5 Then
    
                            Print "Sued/West"
    
                         Else
    
                            If Grad = 247.6 To 292.4 Then
    
                               Print "Westen"
    
                            Else
    
                               If Grad = 292.5 To 337.4 Then
    
                                  Print "Nord/West"
    
                               Else
    
    
    
    
                               End If
                            End If
                         End If
                      End If
                   End If
                End If
             End If
          End If
    
    
    
    
    
    
    
    
             ___lcdno = 1                                       'wählt die unteren 2 Zeilen aus
    
             If Grad = 0 Then                                   '
                Locate 2 , 8
                Lcd "0° / 360°"
    
             Else
                Locate 2 , 8
                Lcd Grad ; "°"
    
    
             End If
    
    
          Waitms 500                                            '500 ms Wartezeit zwischen der Abfragewiederholung
    
          ___lcdno = 1
    
          Locate 2 , 8
          Lcd "               "
    
       Loop                                                     'Ende der Abfrageschleife, Sprung zum Anfang der Schleife
    
    
    
    
    End                                                         'Programmende

    Viele Grüße Felix

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Du kannst:
    Deine Grade ganzahlig durch 22,5 dividieren, gibt irgendwas 0-15,
    das ist dann ein Index auf den Text der Himmelsrichtung
    ODER
    absteigend "select"

    select case Grad
    case is > 337.5: N
    case is > 202.5: NNW
    .....
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2006
    Beiträge
    27
    also das ist schonmal ein sehr guter ansatz, danke dafür

    ich mach das jetzt mit dem Case. hat bis jetzt vom syntax gut geklappt

    so, nun wende ich mich auch nochmal schnell der spi übertragung zu

    ciao

Berechtigungen

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