PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : If...Else und Bereichsauswahl



Stargate
04.02.2007, 12:15
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




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

PicNick
04.02.2007, 12:29
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
.....

Stargate
05.02.2007, 21:32
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