Zum Hauptinhalt springen

Animationseffekte mit LEDs

Einfache Lichteffekte ohne PWM

#define NUMLED 6
const int pinsLED[] = {3, 5, 6, 9, 10, 11};
int ledStates[] = {0, 0, 0, 0, 0, 0}; // gibt an, ob eine LED an oder ausgeschaltet ist
unsigned long lastTime = 0;
unsigned long delayMillis = 100;
int activeLed = 0; // Index der aktiven LED, also jener LED, die angeschaltet ist.

void setup() {
Serial.begin(9600);
for (int i = 0; i < NUMLED; i++) {
pinMode(pinsLED[i], OUTPUT);
}
}


// Aktiviert die LEDs entsprechend dem Array 'ledStates'
void showLeds(int pLedStates[]) {
for (int i = 0; i < NUMLED; i++) {
digitalWrite(pinsLED[i], pLedStates[i]);
}
}

// Löscht alle LED
void clear() {
for (int i = 0; i < NUMLED; i++) {
ledStates[i] = 0;
}
}

void loop() {
if ( (millis() - lastTime) > delayMillis) {
clear();
/******************************************************************
Ändern sie mit einer for- Schleifen die Werte des Arrays `ledStates` so,
dass sich ein Lauflicht ergibt.

Nutzen Sie die Funktion 'setLeds()' zum An-/Ausschalten der LEDs.
*******************************************************************/

setLeds(ledStates); // Funktion zum Schalten der LEDs
lastTime = millis(); // Zeitstempel
}
}

Aufgaben

Aufgaben
  1. Vervollständigen Sie die obige Vorlage so, dass ein einzelnes Licht in nur eine Richtung wandert. Ist das Licht am Ende angekommen, springt es wieder zu ersten LED.
  2. Erweitern Sie das Programm so, dass das Licht immer hin und her läuft.
  3. Im nächsten Schritt soll nicht nur ein einzelnes Licht, sondern drei Lichter hin- und herlaufen.
  4. Fügen Sie zu Ihrer Schaltung ein Potentionmeter hinzu, mit dem die Geschwindigkeit des Lauflichts (mit einem oder drei Lichtern) gesteuert wird.
  5. The last task is maybe the most difficult one. Fade out the brightness of a light that is moved stepwise with two buttons. Each time the light moves to an adjacent LED, the old LED does not immediately turn off, but fades slowly out. The fading time will be controlled by the potentiometer.