PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spannung mit ADC messen und Wertbereich weiterverarbeiten



RAM
01.05.2010, 16:02
Hi Leute, brauch mal wieder eure Hilfe.

Bastel grad ein kleines Programm für einen Spannungswächter. Dabei messe ich die Spannung per ADC und gebe die versch. Spannungswerte per LED aus.
Jetz meine Frage, wenn ich bei einem ADC-Wertebereich zwichen sagen wir mal >827 und <924 eine LED schalten will, wie mache ich das, also wie schreibe ich es für BASCOM verständlich, dass er in diesem Bereich die LED an PORTD.1 auf 1 schalten soll?
Bei einem festen wert wie z.B. if W < 827 then PORTD.0 = 1 ist mir das klar, aber wie kann ich das bei einem Wertbereich machen?

Danke schon mal!

Gruß,

Martin

for_ro
01.05.2010, 19:55
Hallo Martin,
zunächst kannst du einfach mal mehrere Bedingungen verknüpfen. In deinem Fall so:
If W>827 And W<924 Then
PortD.1=1
End If

Allerdings ist das erst die halbe Miete. Wahrscheinlich willst du ja
PortD.1=0
setzen, wenn W nicht in diesem Bereich liegt.
Das ginge z.B. so:
If W > 827 And W < 924 Then
PortD.1 = 1
Else
PortD.1 = 0
End If

Etwas schwieriger wird es, wenn du je nach Wert von W verschiedene LEDs einschalten willst. Also z.B.
If W > 924 Then : Portd = &B00000001
Elseif W > 827 Then : Portd = &B00000010
Elseif W > 730 Then : Portd = &B00000100
Elseif W > 645 Then : Portd = &B00001000
Elseif W > 552 Then : Portd = &B00010000
Elseif W > 400 Then : Portd = &B00100000
Elseif W > 250 Then : Portd = &B01000000
Else
PortD = &B10000000
End If

Die gleiche Logik kannst du auch mit Select erreichen:
Select Case W
Case Is > 924: PortD = &B00000001
Case Is > 827: PortD = &B00000010
Case Is > 730: PortD = &B00000100
Case Is > 645: PortD = &B00001000
Case Is > 552: PortD = &B00010000
Case Is > 400: PortD = &B00100000
Case Is > 250: PortD = &B01000000
Case Else: PortD = &B10000000
End Select

RAM
01.05.2010, 20:08
Danke dir, hast mich nen großen Schritt weiter gebracht! Werd ich gleich mal ausprobieren!

Gruß,

Martin