kamiln61

Untitled

Apr 13th, 2021
766
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.   KaskadaLED
  3.   ==============
  4.     Data utworzenia : 31.01.2018
  5.     Data modyfikacji: 02.04.2020
  6. */
  7.  
  8. /* Inicjalizacja zmiennych */
  9.  
  10. int count = 0;
  11. int timer = 200;
  12.  
  13. // W tablicy ledArray umieszczono nr zlącz cyfrowych
  14. // które połączone są z diodami LED
  15. int ledArray[5] = {8, 9, 10, 11, 12};
  16.  
  17. // Tablica ledDIP włącza/wyłącza podłączenie diod LED do kaskady
  18. // Działa jak przełącznik wielopolowy typu DIP Switch
  19. // Standardowo dioda nr 5 w sekwencji wyłączona
  20. int ledState[5] = {1, 1, 1, 1, 1};
  21.  
  22. int buttonPin = 2;
  23. int onBoardLed = 13;
  24. int onBoardLedState = HIGH;
  25. bool longPress = false;
  26. long time;
  27. bool isCascadeRunning = false;
  28. bool stoppedManually = false;
  29.  
  30. /* Koniec Inicjalizacji zmiennych */
  31.  
  32. /* Funkcja standardowa */
  33. void setup() {
  34.   // Przypisanie poszczególnym złączom roli wyjścia
  35.  
  36.   for (count = 0; count < 5; count++) {
  37.  
  38.     pinMode(ledArray[count], OUTPUT);
  39.   }
  40.  
  41.   pinMode(onBoardLed, OUTPUT);
  42.   pinMode(buttonPin, INPUT_PULLUP);
  43.  
  44.   ledTest();
  45. }
  46.  
  47. /* Funkcja użytkownika
  48.    Kaskadowe zapalenie i gaszenie diód LED  */
  49. void ledCascada() {
  50.  
  51.   for (count = 0; count < 5; count++) {
  52.     if (ledState[count] == 1 ) {
  53.       digitalWrite(ledArray[count], HIGH);
  54.       delay(timer);
  55.       digitalWrite(ledArray[count], LOW);
  56.       delay(timer);
  57.     }
  58.     int readButton = digitalRead(buttonPin);
  59.     if (readButton == 0) {
  60.       isCascadeRunning = ! isCascadeRunning;
  61.       stoppedManually = true;
  62.  
  63.       delay(500); // wait until button debouncing complete
  64.  
  65.       break;
  66.     }
  67.   }
  68. }
  69.  
  70.  
  71. void ledCascadaStop() {
  72.   for (count = 0; count < 5; count++) {
  73.     digitalWrite(ledArray[count], LOW);
  74.   }
  75. }
  76.  
  77. /* Funkcja użytkownika
  78.    Zapalenie i zgaszenie wszystkich diód LED jednocześnie  */
  79. void ledTest() {
  80.   for (count = 0; count < 5; count++) {
  81.     digitalWrite(ledArray[count], HIGH);
  82.   }
  83.   delay (2000);
  84.   for (count = 0; count < 5; count++) {
  85.     digitalWrite(ledArray[count], LOW);
  86.   }
  87. }
  88.  
  89.  
  90.  
  91. /* Główna pętla programu */
  92. void loop() {
  93.   digitalWrite(onBoardLed, LOW);
  94.   if (digitalRead(buttonPin) == LOW) {
  95.     time = millis();
  96.     isCascadeRunning = ! isCascadeRunning;
  97.     stoppedManually = false;
  98.     delay(500); // wait until button debouncing complete
  99.  
  100.   }
  101.   // przycisk wcisniety na dluzej niz 2 sekundy
  102.   if ( (digitalRead(buttonPin) == LOW) && (time - millis() > 2000)) {
  103.     stoppedManually = false; //resetujemy flagi
  104.     isCascadeRunning = false;
  105.     longPress = true;
  106.     delay(500); // wait until button debouncing complete
  107.   }
  108.  
  109.   if ((isCascadeRunning == true) && (stoppedManually == false)) {
  110.     ledCascada();
  111.   }
  112.   if (stoppedManually == true) {
  113.     delay(500);
  114.     digitalWrite(onBoardLed, !digitalRead(onBoardLed));
  115.     delay(500);
  116.   }
  117.   if (longPress) {
  118.     longPress = false;
  119.     ledTest();
  120.  
  121.   }
  122. }
  123. /* End of File */
  124.  
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×