PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wert einer Variable eingrenzen?



TobiasBlome
25.05.2007, 17:00
Hallo
funktioniert das?

If Pwm_2 < 0 Then
Pwm = 0
Else
Pwm = Pwm_2
End If
If Pwm_2 > 255 Then
Pwm = 255
Else
Pwm = PWM_2
End If

Tobias

TobiasBlome
25.05.2007, 17:37
Also etwas genauer:

- wenn PWM_2 < 0 dann PWM=0
- wenn PWM_2 > 255 dann PWM=255
- sonst immer PWM = PWM_2

noch etwas: ich möchte 0 und 255 (und ale Werte dazwischen) umkehren. Gibt es dafür einen Befeht oder ähnliches?!

Tobias

TobiasBlome
25.05.2007, 17:41
Na gut, habe es nun so gelöst:
If Pwm_2 < 0 Then
Pwm = 0
End If
If Pwm_2 > 255 Then
Pwm = 255
End If
If Pwm_2 => 0 Or =< 255 Then
Pwm = PWM_2
End If

Aber das Problem mit dem Wert drehen besteht noch...

Tobias

PicNick
25.05.2007, 18:54
Recht übersichtlich geht das auch mit select:


select case pwm_2
case is < 2: pwm = 0
case is > 255: pwm = 255
case else: pwm = pwm_2
end select

Problem ist, du brauchst 3 Ausgänge
( pwm =0 / pwm = pwm_2 / pwm = 255)

und "IF... ELSE...." hat offenbar nur zwei

TobiasBlome
25.05.2007, 18:59
so Problem gelöst ;-)

erstmal -255 und dann den Absolutwert nehmen:

PWM_2 = 0 'Als Beispiel
Pwm_3 = Pwm_2 - 255 'PWM_3 = -255
Pwm_4 = Abs(pwm_3) 'Absolutwert = 255

TobiasBlome
25.05.2007, 19:02
@PicNick
Ja du hast Recht, leider nur 2 "Ausgänge"
Die Case Methode gefällt mir sehr gut :-)

for_ro
25.05.2007, 22:15
Umdrehen geht einfacher mit
PWM_2 = 255 - PWM_2
Wie ist deine PWM_2 eigentlich dimensioniert? Wenn es eine Byte Variable ist, werden eh keine Werte <0 oder >255 auftreten.