2.2 - Pegelanzeige

Nachdem das erste Projekt lediglich das Blinken einer einzelnen LED zum Ziel hatte, wollen wir uns nun dem LED-Balkendiagramm zuwenden. Dieses besteht aus einer Serie von 10 LEDs in einem Kunststoffgehäuse und dient in der Regel zur Darstellung von Leistungs- oder Lautstärkepegeln.

img_led_bar_pin

Erforderliche Bauteile

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist sicherlich bequem, gleich ein komplettes Kit zu kaufen. Hier der entsprechende Link:

Bezeichnung

ARTIKEL IM SET

KAUF-LINK

Kepler Kit

450+

Kepler Kit

Die Bauteile können jedoch auch einzeln über die unten aufgeführten Links erworben werden.

Nr.

KOMPONENTENBESCHREIBUNG

ANZAHL

KAUF-LINK

1

Raspberry Pi Pico W

1

BUY

2

Micro-USB-Kabel

1

3

Steckbrett

1

BUY

4

Jumperkabel

Mehrere

BUY

5

Widerstand

10 (220Ω)

BUY

6

LED-Balkendiagramm

1

Schaltplan

sch_ledbar

Das LED-Balkendiagramm besteht aus 10 einzeln ansteuerbaren LEDs. Dabei ist die Anode jeder dieser LEDs an die Pins GP6 bis GP15 angeschlossen. Die Kathode ist jeweils über einen 220-Ohm-Widerstand mit GND verbunden.

Verkabelung

wiring_ledbar

Programmcode

Bemerkung

  • Sie können die Datei 2.2_display_the_level.ino im Verzeichnis kepler-kit-main/arduino/2.2_display_the_level öffnen.

  • Oder Sie kopieren den Code in die Arduino IDE.

  • Vergessen Sie nicht, vor dem Hochladen das richtige Board (Raspberry Pi Pico) und den passenden Port auszuwählen.

Sobald das Programm läuft, werden Sie feststellen, dass die LEDs im LED-Balkendiagramm nacheinander aufleuchten und erlöschen.

Funktionsweise

Jede der zehn LEDs im LED-Balkendiagramm wird durch einen eigenen Pin gesteuert. Das bedeutet, dass wir diese zehn Pins zuerst definieren müssen.

Im Abschnitt setup() wird eine For-Schleife verwendet, um die Pins 6 bis 15 nacheinander als Ausgang (OUTPUT) zu initialisieren.

for(int i=6;i<=15;i++)
{
    pinMode(i,OUTPUT);
}

In der loop()-Funktion wird ebenfalls eine For-Schleife verwendet, um die LEDs sequenziell blinken zu lassen (0,5 Sekunden ein, dann 0,5 Sekunden aus).

for(int i=6;i<=15;i++)
{
    digitalWrite(i,HIGH);
    delay(500);
    digitalWrite(i,LOW);
    delay(500);
}