Das LED-Anzeigemodul B10BRYGB wird als "10-LED-Bargraph"10-LED-Bargraph bezeichnet und ist letztendlich eine Reihe von verschiedenen farbigen LEDs in einem in Kunstharz gegossenen Gehäuse, welches z.B. als Batterieanzeige oder VU-Meter verwendet werden kann. Im obigen Bild werden vier verschiedene Farben angedeutet, ich habe aber die Erfahrung gemacht, dass viele erhältliche Module nur aus drei Farben (5× grün, 3× gelb, 2× rot) bestehen
Auf meinen Modulen waren keine offensichtlichen Markierungen zu erkennen, welcher Pin welche Bedeutung hat, daher hilft das folgende Diagramm und ein Multimeter herauszufinden, wo Kathode bzw. Anode der jeweiligen Einzel-LEDs sind.
Der folgende Aufbau ist für die beiden Experimente passend, obwohl der Piezosensor im ersten
Aufbau nicht verwendet wird. Grundsätzlich sind die Anschlüsse des B10BRYGB wie ganz reguläre LEDs
zu behandeln, d.h. sie benötigen jeweils einen passenden Vorwiderstand (hier: 1kΩ). Je nach Modul
kann sich zeigen, dass einige Farben (bei mir: grün) deutlich heller leuchten als andere, daher
ist es ratsam, Vorwiderstände mit verschiedenen Werten zu verwenden, um ein einheitliches Leuchtbild
zu schaffen.
(Mehr Details über den Sensor kann man im Beitrag "Piezosensor mit Arduino"
erfahren)
Um die Funktionalität der Einzel-LEDs des B10BRYGB zu testen, bietet sich ein einfaches Lauflicht an, welches jede LED nacheinander kurz aufleuchten lässt:
const byte ledPins[10] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
void setup()
{
for (byte i = 0; i < sizeof(ledPins); i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop()
{
static byte idx = 0;
if (idx > 0) {
digitalWrite(ledPins[idx - 1], LOW);
} else {
digitalWrite(ledPins[sizeof(ledPins) - 1], LOW);
}
digitalWrite(ledPins[idx], HIGH);
idx++;
idx %= 10;
delay(150);
}
Statt dem Piezo-Sensor, der auf Druck besser reagiert, als auf Geräusche bzw. Musik, kann man in diesem Versuch natürlich auch ein Mikrofonsensor TE-136 o.ä. verwenden. (Anschlüsse sind dann natürlich nicht gleich!)
#define PIEZO_PIN A0
const byte ledPins[10] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
void setup()
{
pinMode(PIEZO_PIN, INPUT);
for (byte i = 0; i < sizeof(ledPins); i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop()
{
static byte idx = 0;
int analogValue = analogRead(PIEZO_PIN);
for (byte i = 0; i < sizeof(ledPins); i++) {
if (analogValue > 50 * i) {
digitalWrite(ledPins[i], HIGH);
} else {
digitalWrite(ledPins[i], LOW);
}
}
}
zurück