Advertisement
Technics66

windshield

Feb 23rd, 2018
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.12 KB | None | 0 0
  1. //Переменные
  2. #define buttonPin 3 //Вход полключения кнопки
  3. #define ledPin 4 //Выход индикатора включения
  4. #define hotRightPin 8 //Выход управления реле правой стороны
  5. #define hotLeftPin 9 //Выход управления реле левой стороны
  6. unsigned long currentTime;
  7. unsigned long currentTimeOn;
  8. unsigned long loopTime;
  9. unsigned long timingOn = 0;
  10. unsigned long timingSwitch = 0;
  11. boolean buttonWasUp = true; // Кнопка НЕ нажата?
  12. boolean hotEnabled = false; // Подогрев включён?
  13.  
  14. void setup() {
  15.   pinMode (buttonPin, INPUT_PULLUP);
  16.   pinMode (ledPin, OUTPUT);
  17.   pinMode (hotRightPin, OUTPUT);
  18.   pinMode (hotLeftPin, OUTPUT);
  19.   currentTime = millis();
  20.   currentTimeOn = millis();
  21.   loopTime = currentTime;
  22.   }
  23.  
  24. void loop() {
  25.   //Обработака кнопки
  26.   boolean buttonIsUp = digitalRead(buttonPin); //Считывание состояния кнопки
  27.   if (buttonWasUp && !buttonIsUp) { //Если кнопка нажалась то ждём 5мс
  28.     delay(5);
  29.     buttonIsUp = digitalRead(buttonPin); //снова считываем состояние кнопки
  30.     if (!buttonIsUp) { //Если оно осталось нажатой
  31.       hotEnabled = !hotEnabled; //то меняем состояния On/Off
  32.       currentTimeOn = millis(); //и сохраняем время в переменную
  33.       }
  34.    }
  35.    buttonWasUp = buttonIsUp;
  36.    digitalWrite(ledPin, hotEnabled);
  37.  
  38.    if (hotEnabled && (currentTimeOn + 10000) > millis()){ //Если подогрев вкл и время работы 10с не прошло активируем выхода
  39.     currentTime = millis();
  40.     if (currentTime >= (loopTime + 500)){ //время переключения выходов
  41.       loopTime = currentTime;
  42.       digitalWrite(hotLeftPin, !digitalRead(hotLeftPin));
  43.       digitalWrite(hotRightPin, !digitalRead(hotLeftPin));
  44.       }      
  45.     }
  46.     else{
  47.       hotEnabled=false;
  48.       digitalWrite(hotLeftPin, LOW);
  49.       digitalWrite(hotRightPin, LOW);
  50.       }      
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement