Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Arduino.h>
- #include <GyverButton.h>
- #include <EEPROMex.h>
- /*
- Arduino pins
- */
- #define RELAY_1 9
- #define RELAY_2 8
- #define RELAY_3 7
- #define RELAY_4 6
- #define RELAY_5 5
- #define RELAY_6 4
- #define RELAY_7 3
- #define RELAY_8 2
- #define AMP_SWITCH_BTN_PIN 12
- #define LED_1 A1
- #define LED_2 A2
- #define LED_3 A3
- GButton ampSwitchBtn(AMP_SWITCH_BTN_PIN);
- byte currentMode = 1;
- void turnOffTheLights()
- {
- digitalWrite(LED_1, LOW);
- digitalWrite(LED_2, LOW);
- digitalWrite(LED_3, LOW);
- }
- void turnOnLight(uint8_t pin)
- {
- digitalWrite(pin, HIGH);
- }
- void mode1()
- {
- turnOffTheLights();
- digitalWrite(RELAY_1, HIGH);
- digitalWrite(RELAY_2, HIGH);
- digitalWrite(RELAY_3, HIGH);
- digitalWrite(RELAY_4, HIGH);
- digitalWrite(RELAY_5, HIGH);
- digitalWrite(RELAY_6, HIGH);
- digitalWrite(RELAY_7, HIGH);
- digitalWrite(RELAY_8, HIGH);
- turnOnLight(LED_1);
- }
- void mode2()
- {
- turnOffTheLights();
- digitalWrite(RELAY_1, LOW);
- digitalWrite(RELAY_2, LOW);
- digitalWrite(RELAY_3, LOW);
- digitalWrite(RELAY_4, LOW);
- digitalWrite(RELAY_5, HIGH);
- digitalWrite(RELAY_6, HIGH);
- digitalWrite(RELAY_7, HIGH);
- digitalWrite(RELAY_8, HIGH);
- turnOnLight(LED_2);
- }
- void mode3()
- {
- turnOffTheLights();
- digitalWrite(RELAY_1, HIGH);
- digitalWrite(RELAY_2, HIGH);
- digitalWrite(RELAY_3, HIGH);
- digitalWrite(RELAY_4, HIGH);
- digitalWrite(RELAY_5, LOW);
- digitalWrite(RELAY_6, LOW);
- digitalWrite(RELAY_7, LOW);
- digitalWrite(RELAY_8, LOW);
- turnOnLight(LED_3);
- }
- void switchToCurrentMode()
- {
- switch (currentMode)
- {
- case 1:
- mode1();
- break;
- case 2:
- mode2();
- break;
- case 3:
- mode3();
- break;
- default:
- break;
- }
- saveCurrentModeToEEPROM();
- }
- void processAmpSwitchButtonClick()
- {
- if (ampSwitchBtn.isSingle())
- {
- currentMode++;
- if (currentMode > 3)
- {
- currentMode = 1;
- }
- switchToCurrentMode();
- }
- }
- void setup()
- {
- pinMode(RELAY_1, OUTPUT);
- pinMode(RELAY_2, OUTPUT);
- pinMode(RELAY_3, OUTPUT);
- pinMode(RELAY_4, OUTPUT);
- pinMode(RELAY_5, OUTPUT);
- pinMode(RELAY_6, OUTPUT);
- pinMode(RELAY_7, OUTPUT);
- pinMode(RELAY_8, OUTPUT);
- pinMode(LED_1, OUTPUT);
- pinMode(LED_2, OUTPUT);
- pinMode(LED_3, OUTPUT);
- ampSwitchBtn.setTickMode(MANUAL);
- ampSwitchBtn.setClickTimeout(600); // настройка таймаута между кликами (по умолчанию 300 мс)
- readModeFromEEPROM();
- switchToCurrentMode();
- }
- void loop()
- {
- ampSwitchBtn.tick();
- processAmpSwitchButtonClick();
- }
- void saveCurrentModeToEEPROM()
- {
- EEPROM.writeByte(0, currentMode);
- }
- void readModeFromEEPROM()
- {
- byte savedMode = EEPROM.readByte(0);
- if (savedMode == 0)
- { // first run
- currentMode = 1;
- }
- else
- {
- currentMode = savedMode;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement