Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Переменные
- #define buttonPin 3 //Вход полключения кнопки
- #define ledPin 4 //Выход индикатора включения
- #define hotRightPin 8 //Выход управления реле правой стороны
- #define hotLeftPin 9 //Выход управления реле левой стороны
- unsigned long currentTime;
- unsigned long currentTimeOn;
- unsigned long loopTime;
- unsigned long timingOn = 0;
- unsigned long timingSwitch = 0;
- boolean buttonWasUp = true; // Кнопка НЕ нажата?
- boolean hotEnabled = false; // Подогрев включён?
- void setup() {
- pinMode (buttonPin, INPUT_PULLUP);
- pinMode (ledPin, OUTPUT);
- pinMode (hotRightPin, OUTPUT);
- pinMode (hotLeftPin, OUTPUT);
- currentTime = millis();
- currentTimeOn = millis();
- loopTime = currentTime;
- }
- void loop() {
- //Обработака кнопки
- boolean buttonIsUp = digitalRead(buttonPin); //Считывание состояния кнопки
- if (buttonWasUp && !buttonIsUp) { //Если кнопка нажалась то ждём 5мс
- delay(5);
- buttonIsUp = digitalRead(buttonPin); //снова считываем состояние кнопки
- if (!buttonIsUp) { //Если оно осталось нажатой
- hotEnabled = !hotEnabled; //то меняем состояния On/Off
- currentTimeOn = millis(); //и сохраняем время в переменную
- }
- }
- buttonWasUp = buttonIsUp;
- digitalWrite(ledPin, hotEnabled);
- if (hotEnabled && (currentTimeOn + 10000) > millis()){ //Если подогрев вкл и время работы 10с не прошло активируем выхода
- currentTime = millis();
- if (currentTime >= (loopTime + 500)){ //время переключения выходов
- loopTime = currentTime;
- digitalWrite(hotLeftPin, !digitalRead(hotLeftPin));
- digitalWrite(hotRightPin, !digitalRead(hotLeftPin));
- }
- }
- else{
- hotEnabled=false;
- digitalWrite(hotLeftPin, LOW);
- digitalWrite(hotRightPin, LOW);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement