Advertisement
Guest User

Blind Machine

a guest
Dec 15th, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.44 KB | None | 0 0
  1. /*
  2.   +++++++++++++++++
  3.   + Blind-Machine +
  4.   +++++++++++++++++
  5. */
  6.  
  7.  
  8. // Variablen-Initialisierung
  9. // ------------------------------------------------------------------------------------------------------
  10. int             activeLed         = 2;    // Variable für die aktive LED
  11. unsigned long   previousMillis    = 0;    // Variable für die Zeitmessung
  12. int             buttonStateReset  = LOW;  // Variable für den Reset-Taster
  13. int             buttonStateAdd    = LOW;  // Variable für den Erhöhen-Taster
  14. int             buttonStateDec    = LOW;  // Variable für den Senken-Taster
  15. int             buttonStateCheck  = 0;    // Variable für Prüfung mehrerer Taster
  16. int             buttonState       = 0;    // Variable für Taster-Nummer
  17. const int       debouncetimeReset = 1000; // Variable für Mindestdrucklänge des Reset-Tasters
  18. const int       debouncetimeAdd   = 250;  // Variable für Mindestdrucklänge des Erhöhen-Tasters
  19. const int       debouncetimeDec   = 250;  // Variable für Mindestdrucklänge des Senken-Tasters
  20. // ------------------------------------------------------------------------------------------------------
  21.  
  22.  
  23. // VOID SETUP
  24. // ######################################################################################################
  25.  
  26. void setup() {
  27.  
  28.   // Pin-Initialisierung
  29.   // ----------------------------------------------------------------------------------------------------
  30.  
  31.   for (int i = 2; i < 10; i++) {
  32.     pinMode(i, OUTPUT);   // Initialisiert die Pins 2 bis 9 als Ausgang
  33.   }
  34.   for (int i = 10; i < 13; i++) {
  35.     pinMode(i, INPUT);    // Initialisiert die Pins 11 bis 13 als Eingang für Taster (Pulldown)
  36.   }
  37.  
  38.   // ----------------------------------------------------------------------------------------------------
  39.  
  40.   // Initiale LED-Aktivierung
  41.   // ----------------------------------------------------------------------------------------------------
  42.  
  43.   for (int i = 0; i < 5; i++) {          // Initialisierungsbestätigung durch 5 maliges Blinken
  44.     digitalWrite(activeLed, LOW);
  45.     delay(100);
  46.     digitalWrite(activeLed, HIGH);
  47.     delay(100);
  48.   }
  49.  
  50.   // ----------------------------------------------------------------------------------------------------
  51.  
  52. }
  53.  
  54. // ######################################################################################################
  55.  
  56.  
  57. // VOID LOOP
  58. // ######################################################################################################
  59.  
  60. void loop() {
  61.  
  62.   buttonStateReset = digitalRead(10);   // Abfrage Reset-Taster
  63.   buttonStateAdd   = digitalRead(11);   // Abfrage Erhöhen-Taster
  64.   buttonStateDec   = digitalRead(12);   // Abfrage Senken-Taster
  65.  
  66.   // Prüfung, ob mehr als ein Taster gleichzeitig gedrückt ist
  67.   // ----------------------------------------------------------------------------------------------------
  68.  
  69.   buttonState       = 0;
  70.   buttonStateCheck  = 0;
  71.  
  72.   if (buttonStateReset == HIGH) {
  73.     buttonState = 1;
  74.     buttonStateCheck++;
  75.   }
  76.   if (buttonStateAdd == HIGH) {
  77.     buttonState = 2;
  78.     buttonStateCheck++;
  79.   }
  80.   if (buttonStateDec == HIGH) {
  81.     buttonState = 3;
  82.     buttonStateCheck++;
  83.   }
  84.  
  85.   if (buttonStateCheck > 1) {         // Fehlermeldung, wenn mehr als ein Taster betätigt ist
  86.     for (int i = 0; i < 5; i++) {
  87.       for (int y = 2; y < 10; y++) {
  88.         digitalWrite(y, HIGH);
  89.         delay(20);
  90.         digitalWrite(y, LOW);
  91.         delay(20);
  92.       }
  93.     }
  94.     delay(500);
  95.     digitalWrite(activeLed, HIGH);
  96.     previousMillis = millis();
  97.   }
  98.  
  99.   // ----------------------------------------------------------------------------------------------------
  100.  
  101.   // Steuerung
  102.   // ----------------------------------------------------------------------------------------------------
  103.  
  104.   if (buttonState != 0) {
  105.  
  106.     if (buttonState == 1) {       // Reset auf Startbedingung
  107.       if ((millis() - previousMillis) > debouncetimeReset) {
  108.         for (int i=2; i<10; i++) {
  109.           digitalWrite(i, LOW);
  110.         }
  111.         activeLed=2;
  112.         delay(1000);
  113.         digitalWrite(activeLed, HIGH);
  114.         previousMillis = millis();    // aktuallisiert die Zeitvariable
  115.       }
  116.     }
  117.    
  118.     if (buttonState == 2) {       // Aktuelle LED deaktivieren und nächste LED aktivieren
  119.       if ((millis() - previousMillis) > debouncetimeAdd) {
  120.         if (activeLed < 9) {      // Wenn höchste LED erreicht, dann wird die Schleife ignoriert
  121.           digitalWrite(activeLed, LOW);
  122.           delay(10);
  123.           activeLed++;
  124.           digitalWrite(activeLed, HIGH);
  125.           delay(2000);
  126.           previousMillis = millis();    // aktuallisiert die Zeitvariable
  127.         }
  128.       }
  129.     }
  130.  
  131.     if (buttonState == 3) {       // Aktuelle LED deaktivieren und vorhergehende LED aktivieren
  132.       if ((millis() - previousMillis) > debouncetimeDec) {
  133.         if (activeLed > 2) {      // Wenn niedrigste LED erreicht, dann wird die Schleife ignoriert
  134.           digitalWrite(activeLed, LOW);
  135.           delay(10);
  136.           activeLed--;
  137.           digitalWrite(activeLed, HIGH);
  138.           delay(2000);
  139.           previousMillis = millis();    // aktuallisiert die Zeitvariable
  140.         }
  141.       }
  142.     }
  143.   }
  144.  
  145.   if (buttonState == 0) {          // Wenn kein Button gedrückt ist, wird die Zeitvariable aktuallisiert
  146.     previousMillis = millis();     // aktuallisiert die Zeitvariable
  147.   }
  148.  
  149. }
  150.  
  151. // ######################################################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement