/* Sketchname: sr595_lauflicht.ino Name: Max Mustermann Klasse: ITA-12B Ausbildungsberuf: Informationstechnischer Assistent Schularbeit: Lauflichtprojekt 1b Framework: Arduino */ #include // Pins für das Schieberegister #define DATA_PIN 11 #define LATCH_PIN 10 #define CLOCK_PIN 13 // Pins für Eingaben #define POT_PIN A0 #define DIP1_PIN 2 #define DIP2_PIN 3 // Objekt des Schieberegisters erstellen shiftreg595 sr(DATA_PIN, CLOCK_PIN, LATCH_PIN); // Variablen uint8_t ledPattern = 0; int delayTime = 200; uint8_t mode = 0; void setup() { // DIP-Schalter als Eingang definieren pinMode(DIP1_PIN, INPUT_PULLUP); pinMode(DIP2_PIN, INPUT_PULLUP); } void loop() { // Potenziometer einlesen und auf Zeit mappen (50ms - 500ms) int potValue = analogRead(POT_PIN); delayTime = map(potValue, 0, 1023, 50, 500); // DIP-Schalter einlesen (2 Bit -> 4 Modi) mode = (!digitalRead(DIP1_PIN) << 1) | (!digitalRead(DIP2_PIN)); // Je nach Modus anderes Lauflicht switch (mode) { case 0: lauflicht_links(); break; case 1: lauflicht_rechts(); break; case 2: pingpong(); break; case 3: blinken(); break; } } // Lauflicht von links nach rechts void lauflicht_links() { for (int i = 0; i < 8; i++) { ledPattern = (1 << i); sr.setvalue(ledPattern); delay(delayTime); } } // Lauflicht von rechts nach links void lauflicht_rechts() { for (int i = 7; i >= 0; i--) { ledPattern = (1 << i); sr.setvalue(ledPattern); delay(delayTime); } } // Ping-Pong-Effekt void pingpong() { for (int i = 0; i < 8; i++) { ledPattern = (1 << i); sr.setvalue(ledPattern); delay(delayTime); } for (int i = 6; i > 0; i--) { ledPattern = (1 << i); sr.setvalue(ledPattern); delay(delayTime); } } // Alle LEDs blinken void blinken() { sr.setvalue(0xFF); // alle an delay(delayTime); sr.setvalue(0x00); // alle aus delay(delayTime); }