Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- KaskadaLED
- ==============
- Data utworzenia : 31.01.2018
- Data modyfikacji: 02.04.2020
- */
- /* Inicjalizacja zmiennych */
- int count = 0;
- int timer = 200;
- // W tablicy ledArray umieszczono nr zlącz cyfrowych
- // które połączone są z diodami LED
- int ledArray[5] = {8, 9, 10, 11, 12};
- // Tablica ledDIP włącza/wyłącza podłączenie diod LED do kaskady
- // Działa jak przełącznik wielopolowy typu DIP Switch
- // Standardowo dioda nr 5 w sekwencji wyłączona
- int ledState[5] = {1, 1, 1, 1, 1};
- int buttonPin = 2;
- int onBoardLed = 13;
- int onBoardLedState = HIGH;
- bool longPress = false;
- long time;
- bool isCascadeRunning = false;
- bool stoppedManually = false;
- /* Koniec Inicjalizacji zmiennych */
- /* Funkcja standardowa */
- void setup() {
- // Przypisanie poszczególnym złączom roli wyjścia
- for (count = 0; count < 5; count++) {
- pinMode(ledArray[count], OUTPUT);
- }
- pinMode(onBoardLed, OUTPUT);
- pinMode(buttonPin, INPUT_PULLUP);
- ledTest();
- }
- /* Funkcja użytkownika
- Kaskadowe zapalenie i gaszenie diód LED */
- void ledCascada() {
- for (count = 0; count < 5; count++) {
- if (ledState[count] == 1 ) {
- digitalWrite(ledArray[count], HIGH);
- delay(timer);
- digitalWrite(ledArray[count], LOW);
- delay(timer);
- }
- int readButton = digitalRead(buttonPin);
- if (readButton == 0) {
- isCascadeRunning = ! isCascadeRunning;
- stoppedManually = true;
- delay(500); // wait until button debouncing complete
- break;
- }
- }
- }
- void ledCascadaStop() {
- for (count = 0; count < 5; count++) {
- digitalWrite(ledArray[count], LOW);
- }
- }
- /* Funkcja użytkownika
- Zapalenie i zgaszenie wszystkich diód LED jednocześnie */
- void ledTest() {
- for (count = 0; count < 5; count++) {
- digitalWrite(ledArray[count], HIGH);
- }
- delay (2000);
- for (count = 0; count < 5; count++) {
- digitalWrite(ledArray[count], LOW);
- }
- }
- /* Główna pętla programu */
- void loop() {
- digitalWrite(onBoardLed, LOW);
- if (digitalRead(buttonPin) == LOW) {
- time = millis();
- isCascadeRunning = ! isCascadeRunning;
- stoppedManually = false;
- delay(500); // wait until button debouncing complete
- }
- // przycisk wcisniety na dluzej niz 2 sekundy
- if ( (digitalRead(buttonPin) == LOW) && (time - millis() > 2000)) {
- stoppedManually = false; //resetujemy flagi
- isCascadeRunning = false;
- longPress = true;
- delay(500); // wait until button debouncing complete
- }
- if ((isCascadeRunning == true) && (stoppedManually == false)) {
- ledCascada();
- }
- if (stoppedManually == true) {
- delay(500);
- digitalWrite(onBoardLed, !digitalRead(onBoardLed));
- delay(500);
- }
- if (longPress) {
- longPress = false;
- ledTest();
- }
- }
- /* End of File */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement