Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Arduino.h"
- // definiowanie pinów dla przekaźników
- #define RELAY_1 10 // przekaznik 1 na pin 10
- #define RELAY_2 11 // przekaznik 2 na pin 11
- #define RELAY_3 12 // przekaznik 3 na pin 12
- #define RELAY_4 13 // przekaznik 4 na pin 13
- // definiowainie pinów dla ledów
- #define LED_1 4 // led 1 na pin 4
- #define LED_2 5 // led 2 na pin 5
- #define LED_3 6 // led 3 na pin 6
- #define LED_4 7 // led 4 na pin 7
- // definiowanie przycisków
- #define BUTTON_1 2 // przycisk 1 na pin 1
- // defincja klasy Relay
- class Relay
- {
- protected:
- uint8_t pin;
- bool state;
- bool normallyOpen;
- public:
- Relay(){}
- Relay(uint8_t p, bool isNormallyOpen)
- {
- pin = p;
- normallyOpen = isNormallyOpen;
- } //KONIEC Relay(...)
- void begin()
- {
- pinMode(pin, OUTPUT);
- } //KONIEC begin();
- bool getState()
- {
- if (normallyOpen) return !state;
- else return state;
- } //KONIEC getState();
- void turnOn()
- {
- if (normallyOpen)
- {
- if (state == !true) return;
- state = !true;
- }
- else
- {
- if (state == true) return;
- state = true;
- }
- digitalWrite(pin, state);
- } // KONIEC turnON();
- void turnOff()
- {
- if (normallyOpen)
- {
- if (state == !false) return;
- state = !false;
- }
- else
- {
- if (state == false) return;
- state = false;
- }
- digitalWrite(pin, state);
- } // KONIEC turnOFF();
- };
- // defincja klasy Relay
- class Leds
- {
- protected:
- uint8_t pin;
- bool state;
- public:
- Leds(){}
- Leds(uint8_t p)
- {
- pin = p;
- } //KONIEC Leds(...)
- void begin()
- {
- pinMode(pin, OUTPUT);
- } //KONIEC begin();
- bool getState()
- {
- return state;
- } //KONIEC getState();
- void turnOn()
- {
- if(!state) state = true;
- digitalWrite(pin, state);
- } // KONIEC turnON();
- void turnOff()
- {
- if (state) state = !false;
- digitalWrite(pin, state);
- } // KONIEC turnOFF();
- };
- // defincja klasy Button
- class Button
- {
- private:
- const int m_pin;
- bool m_lastButtonState;
- long m_lastDebounceTime = 0;
- const int m_debounceDelay = 50;
- bool m_pressFlag = 0;
- public:
- Button(const int pin) : m_pin(pin)
- {
- } // KONIEC Button
- void init()
- {
- pinMode(m_pin, INPUT);
- m_lastButtonState = read();
- } // KONIEC init();
- bool read()
- {
- return digitalRead(m_pin);
- } // KONIEC read();
- bool onChange()
- {
- bool reading = read();
- if (reading != m_lastButtonState)
- {
- m_lastDebounceTime = millis();
- m_pressFlag = 1;
- }
- if ((millis() - m_lastDebounceTime) > m_debounceDelay)
- {
- if (m_pressFlag)
- {
- m_pressFlag = 0;
- m_lastButtonState = reading;
- return 1;
- }
- }
- m_lastButtonState = reading;
- return 0;
- } // KONIEC onChange();
- bool Button::onPress()
- {
- bool reading = read();
- if (reading == HIGH && m_lastButtonState == LOW)
- {
- m_lastDebounceTime = millis();
- m_pressFlag = 1;
- }
- if ((millis() - m_lastDebounceTime) > m_debounceDelay)
- {
- if (m_pressFlag)
- {
- m_pressFlag = 0;
- m_lastButtonState = reading;
- return 1;
- }
- }
- m_lastButtonState = reading;
- return 0;
- } // KONIEC onPress()
- bool onRelease()
- {
- bool reading = read();
- if (reading == LOW && m_lastButtonState == HIGH)
- {
- m_lastDebounceTime = millis();
- m_pressFlag = 1;
- }
- if ((millis() - m_lastDebounceTime) > m_debounceDelay)
- {
- if ( m_pressFlag)
- {
- m_lastButtonState = reading;
- m_pressFlag = 0;
- return 1;
- }
- }
- m_lastButtonState = reading;
- return 0;
- } // KONIEC onRelease();
- }; // KONIEC klasy onsługi przycisków
- //class Button;
- //class Relay;
- //class Leds;
- // stałe
- const uint8_t ile_odbiornikow = 4;
- // tworzenie obiektów
- Relay przekaznik[ile_odbiornikow] = { {RELAY_1, true}, {RELAY_2, true}, {RELAY_3, true}, {RELAY_4, true} }; // 4 przekazniki
- Leds led[ile_odbiornikow] = { {LED_1}, {LED_2}, {LED_3}, {LED_4} }; // 4 ledy
- Button przycisk(BUTTON_1); // jeden przycisk
- uint8_t f_przycisk = 0; // ile wcisnięć
- uint8_t fake_delay = 0;
- bool wylaczone = 0;
- unsigned long actualTime = 0; // zapamietaj czas
- unsigned long timeout = 0; // powornaj czas
- unsigned long saveTime = 0; // aktualizuj czas
- void setup()
- {
- for (uint8_t i = 0; i < ile_odbiornikow; i++) // aktywacja przekaźników
- {
- przekaznik[i].begin(); // przekaznik[i] start
- przekaznik[i].turnOff(); // przekaznik[i] wyłącz
- led[i].begin(); // led[i] start
- led[i].turnOff(); // led[i].wylacz
- }
- przycisk.init(); // przycisk start
- Serial.begin(9600);
- }
- void loop()
- {
- bool wczytaj = 1;
- if( przycisk.onPress() )
- {
- f_przycisk++;
- // coś tam dalej :-)
- }
- if(wylaczone)
- {
- Serial.print("W fake ");
- Serial.println(f_przycisk);
- delay(5000);
- fake_delay=0;
- f_przycisk=0;
- wylaczone=0;
- Serial.println("GOTOWY");
- actualTime = millis(); // zapamietaj : czas start
- timeout = actualTime - saveTime;
- wczytaj = 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment