Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- +++++++++++++++++
- + Blind-Machine +
- +++++++++++++++++
- */
- // Variablen-Initialisierung
- // ------------------------------------------------------------------------------------------------------
- int activeLed = 2; // Variable für die aktive LED
- unsigned long previousMillis = 0; // Variable für die Zeitmessung
- int buttonStateReset = LOW; // Variable für den Reset-Taster
- int buttonStateAdd = LOW; // Variable für den Erhöhen-Taster
- int buttonStateDec = LOW; // Variable für den Senken-Taster
- int buttonStateCheck = 0; // Variable für Prüfung mehrerer Taster
- int buttonState = 0; // Variable für Taster-Nummer
- const int debouncetimeReset = 1000; // Variable für Mindestdrucklänge des Reset-Tasters
- const int debouncetimeAdd = 250; // Variable für Mindestdrucklänge des Erhöhen-Tasters
- const int debouncetimeDec = 250; // Variable für Mindestdrucklänge des Senken-Tasters
- // ------------------------------------------------------------------------------------------------------
- // VOID SETUP
- // ######################################################################################################
- void setup() {
- // Pin-Initialisierung
- // ----------------------------------------------------------------------------------------------------
- for (int i = 2; i < 10; i++) {
- pinMode(i, OUTPUT); // Initialisiert die Pins 2 bis 9 als Ausgang
- }
- for (int i = 10; i < 13; i++) {
- pinMode(i, INPUT); // Initialisiert die Pins 11 bis 13 als Eingang für Taster (Pulldown)
- }
- // ----------------------------------------------------------------------------------------------------
- // Initiale LED-Aktivierung
- // ----------------------------------------------------------------------------------------------------
- for (int i = 0; i < 5; i++) { // Initialisierungsbestätigung durch 5 maliges Blinken
- digitalWrite(activeLed, LOW);
- delay(100);
- digitalWrite(activeLed, HIGH);
- delay(100);
- }
- // ----------------------------------------------------------------------------------------------------
- }
- // ######################################################################################################
- // VOID LOOP
- // ######################################################################################################
- void loop() {
- buttonStateReset = digitalRead(10); // Abfrage Reset-Taster
- buttonStateAdd = digitalRead(11); // Abfrage Erhöhen-Taster
- buttonStateDec = digitalRead(12); // Abfrage Senken-Taster
- // Prüfung, ob mehr als ein Taster gleichzeitig gedrückt ist
- // ----------------------------------------------------------------------------------------------------
- buttonState = 0;
- buttonStateCheck = 0;
- if (buttonStateReset == HIGH) {
- buttonState = 1;
- buttonStateCheck++;
- }
- if (buttonStateAdd == HIGH) {
- buttonState = 2;
- buttonStateCheck++;
- }
- if (buttonStateDec == HIGH) {
- buttonState = 3;
- buttonStateCheck++;
- }
- if (buttonStateCheck > 1) { // Fehlermeldung, wenn mehr als ein Taster betätigt ist
- for (int i = 0; i < 5; i++) {
- for (int y = 2; y < 10; y++) {
- digitalWrite(y, HIGH);
- delay(20);
- digitalWrite(y, LOW);
- delay(20);
- }
- }
- delay(500);
- digitalWrite(activeLed, HIGH);
- previousMillis = millis();
- }
- // ----------------------------------------------------------------------------------------------------
- // Steuerung
- // ----------------------------------------------------------------------------------------------------
- if (buttonState != 0) {
- if (buttonState == 1) { // Reset auf Startbedingung
- if ((millis() - previousMillis) > debouncetimeReset) {
- for (int i=2; i<10; i++) {
- digitalWrite(i, LOW);
- }
- activeLed=2;
- delay(1000);
- digitalWrite(activeLed, HIGH);
- previousMillis = millis(); // aktuallisiert die Zeitvariable
- }
- }
- if (buttonState == 2) { // Aktuelle LED deaktivieren und nächste LED aktivieren
- if ((millis() - previousMillis) > debouncetimeAdd) {
- if (activeLed < 9) { // Wenn höchste LED erreicht, dann wird die Schleife ignoriert
- digitalWrite(activeLed, LOW);
- delay(10);
- activeLed++;
- digitalWrite(activeLed, HIGH);
- delay(2000);
- previousMillis = millis(); // aktuallisiert die Zeitvariable
- }
- }
- }
- if (buttonState == 3) { // Aktuelle LED deaktivieren und vorhergehende LED aktivieren
- if ((millis() - previousMillis) > debouncetimeDec) {
- if (activeLed > 2) { // Wenn niedrigste LED erreicht, dann wird die Schleife ignoriert
- digitalWrite(activeLed, LOW);
- delay(10);
- activeLed--;
- digitalWrite(activeLed, HIGH);
- delay(2000);
- previousMillis = millis(); // aktuallisiert die Zeitvariable
- }
- }
- }
- }
- if (buttonState == 0) { // Wenn kein Button gedrückt ist, wird die Zeitvariable aktuallisiert
- previousMillis = millis(); // aktuallisiert die Zeitvariable
- }
- }
- // ######################################################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement