Status-LEDs steuern

Der RevPi Flat hat sechs LEDs zur Statusanzeige.
Die LED mit dem Power-Symbol zeigt an, ob die Spannungsversorgung angeschlossen ist. Alle anderen LEDs kannst Du für Dein Projekt frei belegen.

Farbpalette

Bei allen Statusanzeigen handelt es sich um zweifarbige LEDs, die auf grün und rot geschaltet werden können. Wenn bei den frei belegbaren LEDs A1- A5 gleichzeitig rot und grün eingeschaltet wird, leuchten sie orange.

Anders ist es bei der Power-LED: diese leuchtet im Normalbetrieb grün und kann wie die anderen LEDs auch zusätzlich auf rot geschaltet werden. Damit kannst Du z. B. irgendeine Art von Fehler anzeigen lassen. Wenn die rote Power-LED eingeschaltet wird, ist die grüne LED automatisch ausgeschaltet. Diese LED kann also nicht orange leuchten.

LEDs steuern

Die LEDs werden in das sysfs-Verzeichnis “/sys/class/leds/” exportiert, d. h. Du kannst die LEDs über die Dateien unter diesen Verzeichnissen steuern. Es gibt elf Unterverzeichnisse unter „sysfs“: a1_green, a1_red, a2_green, a2_red, …, a5_green, a5_red und power_red. Entsprechend der Kennzeichnung der LEDs auf dem Gehäuse gilt folgende Zuordnung der Verzeichnisse:

Kennzeichnung auf Gehäuse

sysfs Unterverzeichnisse (/sys/class/leds/)

Power-Symbol

power_red

A1

a1_green
a1_red

A2

a2_green
a2_red

A3

a3_green
a3_red

A4

a4_green
a4_red

A5

a5_green
a5_red

Direktansteuerung

Der direkte Zugriff auf die LEDs ist nur möglich, wenn der Kerneltreiber piControl deaktiviert ist, da ansonsten dieser die LEDs verwaltet.

Du schaltest die LEDs ein bzw. aus, indem Du in der Datei „brightness“ unter dem entsprechenden Unterordner den Wert zwischen 0 und 255 setzt.

Beispiel: gib folgende Befehle ein, um die LED A1 auf grün zu schalten:

echo 255 | sudo tee /sys/class/leds/a1_green/brightness
echo 0 | sudo tee /sys/class/leds/a1_red/brightness

Beispiel: gib folgende Befehle ein, um die LED A1 auf rot zu schalten:

echo 0 | sudo tee /sys/class/leds/a1_green/brightness
echo 255 | sudo tee /sys/class/leds/a1_red/brightness

Lass Dich daraus aber bitte nicht zu der Annahme verleiten, dass die LEDs gedimmt werden können. Jeder Wert >=1 schaltet die LED einfach nur ein.

Um eine LED orange leuchten zu lassen, musst Du entsprechend sowohl die rote als auch die grüne LED einschalten.

Gib folgende Befehle z. B. für LED A1 ein:

echo 255 | sudo tee /sys/class/leds/a1_green/brightness echo 255 | sudo tee /sys/class/leds/a1_red/brightness

Ansteuerung mit piTest

Über das Status-Byte RevPiLED können die LEDs wie in der Tabelle angegeben angesteuert werden.
Wie Du Status-Bytes grundsätzlich berechnest, wird im Abschnitt Status-Bytes verwenden erklärt.

Bit

LED

Signal, wenn das Bit auf 1 gesetzt ist

0

A1

grün

1

rot

2

A2

grün

3

rot

4

A3

grün

5

rot

6

A4

grün

7

rot

8

A5

grün

9

rot

Beispiel:

Gib bei RevPiLED den Wert 16 ein (d. h. binär 0001 0000), um die LED A3 grün zu schalten.

piTest -w RevPiLED,16

Beachte bitte, dass immer nur das gewünschte Bit im Byte RevPiLED geändert werden sollte. Wenn man z. B. LED A3 mit piTest -w RevPiLED,16 grün schaltet, schaltet das gleichzeitig die anderen LEDs aus. Man muss also den aktuellen Wert lesen, das gewünschte Bit ändern und dann das ganze Byte zurückschreiben.