Hallo knife,
was ich wollte ist, dass ich in einer tabelle (array) werte ablege (z.B.: 0001, 0010, 0011, ...) und anschließend diese werte nacheinander an die leds ausgeben, z.B. mit for-schleife. gibts denn sowas?
Man könnte das "klassisch" so machen:
Code:
'IIIIIIII Binärausgabe mit den 4 LEDs IIIIIIII
' Der Robby kann OHNE zusätzliche Hardware keine Werte (z.B.
' seiner Sensoren) anzeigen. Diese Routine gibt VALUE mit den
' 4 LEDs in Binärform (als 2 Nibble mit je 4 Bit) aus.
' Die Variable VALUE muss als BYTE definiert sein!
#LEDBINOUT 'Ausgabe 1. Nibble (low)
gosub LEDSOFF: gosub LED1FLASH: gosub LED1FLASH
gosub LED1FLASH: gosub LED1FLASH: gosub LED1FLASH
if (VALUE and &B1) <> 0 then gosub LED1ON
if (VALUE and &B10) <> 0 then gosub LED2ON
if (VALUE and &B100) <> 0 then gosub LED3ON
if (VALUE and &B1000) <> 0 then gosub LED4ON
pause 100 'Ausgabe 2. Nibble (high)
gosub LEDSOFF: gosub LED2FLASH: gosub LED2FLASH
gosub LED2FLASH: gosub LED2FLASH: gosub LED2FLASH
if (VALUE and &B10000) <> 0 then gosub LED1ON
if (VALUE and &B100000) <> 0 then gosub LED2ON
if (VALUE and &B1000000) <> 0 then gosub LED3ON
if (VALUE and &B10000000) <> 0 then gosub LED4ON
pause 100: return
#LED1FLASH
gosub LED1ON: pause 5: gosub LED1OFF: pause 5: return
#LED2FLASH
gosub LED2ON: pause 5: gosub LED2OFF: pause 5: return
'Binär-Dezimal-Tabelle (4-Bit):
' WERT: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
' LED1-> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
' LED2-> 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
' LED3-> 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
' LED4-> 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
'
' Der Dezimal-WERT kann in der 1. Zeile abgelesen werden, wenn man
' die zutreffende LED-Kombination aussucht (1 -> an, 0 -> aus).
' Der Wert des 2. Nibbles (high) kann genauso abgelesen werden,
' muss aber noch mit 16 multipliziert und zum 1. Nibble addiert
' werden, um den ganzen 8-Bit-Dezimalwert (0..255) zu erhalten.
VALUE enthält dann den auszugebenen Wert.
Gruß Dirk
Lesezeichen