Hallo mic,
es gibt beim RP6 6 Status LEDs.
Die heissen SL1 bis SL6 was eine Abkürzung für StatusLED1 bis StatusLED6 ist.
Das ist mit SL1 bis 6 auf dem Mainboard beschriftet, würde ich daher eigentlich ungern ändern.
Hier verstehe ich nicht ganz was Du mir eigentlich sagen willst?Man könnte dann viel einfacher Bitmanipulationen im Bitfeld machen wenn die LED-Namen mit 0 starten.
Was hat der Name einer LED mit Bitmanipulationen zu tun?
Die LEDs heissen einfach so! Habe auch noch nirgendwo eine LED0 gesehen![]()
Könnte man noch hinzufügen - ja. Braucht man aber nicht unbedingt - wenn dann würde ein Makro reichen.Es fehlt auch eine getLEDS()-Funktion.
Über diese Union (aus RP6RobotBaseLib.h):
kannst Du einfach auf das Status LEDs byte und die einzelnen LED Bits zugreifen.Code:union { uint8_t byte; struct { unsigned LEDsR:3; unsigned LEDsL:3; unsigned reserved:2; }; struct { unsigned LED1:1; unsigned LED2:1; unsigned LED3:1; unsigned LED4:1; unsigned LED5:1; unsigned LED6:1; unsigned reserved1:1; unsigned reserved2:1; }; } statusLEDs;
Wird in der Anleitung auch beschrieben wie das geht.
(Schreiben zumindest - lesen ist aber nicht viel anders)
Du kannst direkt die Variable "statusLEDs.byte" verwenden.
Oder statusLEDs.LED1 bis 6
Hier ein Auszug aus einem Beispielprogramm:
Code:if(obstacle_left && obstacle_right) // Obstacle in the middle? statusLEDs.byte = 0b100100; else statusLEDs.byte = 0b000000; statusLEDs.LED5 = obstacle_left; statusLEDs.LED4 = (!obstacle_left); // Inverted LED5! statusLEDs.LED2 = obstacle_right; statusLEDs.LED1 = (!obstacle_right); // Inverted LED2! // Update the LED values: updateStatusLEDs();
-------
Die beiden reservierten Bits sind da eigentlich nur um den Rest vom Byte auch noch bitweise zugänglich zu machen. Brauchst Du abernicht. Mache ich einfach immer so um zu kennzeichnen das da noch Bits frei sind in dem Byte...
MfG,
SlyD






Zitieren

Lesezeichen