Advertisement
kamiln61

Untitled

Apr 13th, 2021
1,202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.82 KB | None | 0 0
  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.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement