/*
BarGraphDemo.ino
Test-Sketch für die BarGraph-Bibliothek
Hardware (Wemos D1 R32):
- SSD1306 OLED am I2C-Bus (optional für Textanzeigen)
- Taster Wemos: rot (Pin 18), gelb (Pin 19), grün (Pin 23)
- Taster WokWi: rot (Pin 13), gelb (Pin 12), grün (Pin 21)
- LEDs Wemos: 0,1,2,3,12,13,14,16,17,25
- LEDs WokWi: 35, 36, 37, 38, 39, 40, 41, 42, 2, 1;
-
- Potentiometer an A0 (hier nicht benötigt; Fokus: LED-Methoden testen)
Ablauf:
- Initialisiert BarGraph und schaltet alle LEDs aus
- Schaltet alle LEDs ein (Test)
- Prüft isOn(), gibt summary() aus
- Schaltet nacheinander jede LED an/aus mit Wartezeit
- Reagiert optional auf Taster:
* Grün -> alle LEDs an
* Rot -> alle LEDs aus
* Gelb -> Lauflicht (LEDs nacheinander mit Richtungswechsel)
*/
#include <BarGraph.h>
// LED-Pins (entsprechend Aufgabenstellung)
int ledPins[BarGraph::LED_COUNT] = {35, 36, 37, 38, 39, 40, 41, 42, 2, 1};
// BarGraph-Objekt
BarGraph leds(ledPins, BarGraph::LED_COUNT);
// Taster-Pins
const int TASTER_ROT = 13;
const int TASTER_GELB = 12;
const int TASTER_GRUEN = 11;
// Variablen für Lauflicht (gelber Taster)
int currentIndex = 0; // aktuell eingeschaltete LED
int direction = 1; // Laufrichtung: 1 = vorwärts, -1 = rückwärts
void setup() {
Serial.begin(115200);
// Taster initialisieren (Pullup: gedrückt = LOW)
pinMode(TASTER_ROT, INPUT_PULLUP);
pinMode(TASTER_GELB, INPUT_PULLUP);
pinMode(TASTER_GRUEN, INPUT_PULLUP);
// LEDs initialisieren
leds.begin();
// Sicherstellen, dass alle aus sind
leds.allOff();
// Test: Alle LEDs ein
leds.allOn();
delay(1000);
// Test: Alle wieder aus
leds.allOff();
delay(500);
// Einzeltests: Jede LED nacheinander einschalten, prüfen, ausschalten
for (uint8_t i = 0; i < leds.count(); i++) {
// LED einschalten
leds.setOn(i);
delay(200);
// LED ausschalten
leds.setOff(i);
delay(150);
}
}
void loop() {
// --- Taster GRÜN: alle LEDs einschalten ---
if (digitalRead(TASTER_GRUEN) == LOW) {
leds.allOn();
delay(250); // einfache Entprellung
}
// --- Taster ROT: alle LEDs ausschalten ---
if (digitalRead(TASTER_ROT) == LOW) {
leds.allOff();
delay(250); // einfache Entprellung
}
// --- Taster GELB: Lauflicht mit Richtungswechsel ---
if (digitalRead(TASTER_GELB) == LOW) {
// Alle LEDs ausschalten, nur aktuelle LED einschalten
leds.allOff();
leds.setOn(currentIndex);
Serial.print(F("Taster GELB: LED ")); Serial.print(currentIndex); Serial.println(F(" AN"));
// Index für nächste LED berechnen
currentIndex += direction;
// Richtungswechsel am Ende des Arrays
if (currentIndex >= leds.count()) {
currentIndex = leds.count() - 2; // zurückspringen
direction = -1; // Richtung rückwärts
}
if (currentIndex < 0) {
currentIndex = 1; // zurückspringen
direction = 1; // Richtung vorwärts
}
delay(250); // einfache Entprellung
}
}