Advertisement
Igorochenka

Umnie_Dom

Jan 27th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.47 KB | None | 0 0
  1. #include <Servo.h>  // Включаем библиотеку Сервопривода
  2. #include <DHT.h> // Включаем библиотеку Термометра
  3. const int move_sensor = 2; // Пин Датчика Приближения
  4. const int motor_ENB = 3; // Пин скорости мотора
  5. const int button = 4; // Пин Кнопки
  6. const int motor1_IN3 = 5; // Пин Мотора на Драйвер_1 L298N
  7. const int motor2_IN4 = 6; // Пин Мотора на Драйвер_2 L298N
  8. const int LEDpin1 = 7; // Пин Светодиода_1
  9. const int LEDpin2 = 8; // Пин Светодиода_2
  10. const int DHTPIN = 11; // Пин Датчика Температуры
  11. const int LEDpin3 = 12; // Пин Светодиода_3
  12. int state = LOW; // Переменная состояния выхода    
  13. int reading; // Переменная значения кнопки в данный момент          
  14. int previous = HIGH; // Переменная предыдущего значения кнопки
  15. #define DHTTYPE DHT11 // Тип Датчика Температуры (DHT11)
  16. DHT dht(DHTPIN, DHTTYPE); // Обозначаем Датчик Температуры для Библиотеки
  17.  
  18. long time = 0; // Переменная последнего времени , когда выход был переключен      
  19. long debounce = 200; // Переменная дребежжания
  20.  
  21. Servo servo1; // Обозначаем Сервопривод для Библиотеки Сервоприводов
  22.  
  23. void setup()
  24. {
  25. servo1.attach(3); // Подключить Сервопривод Пин - 3
  26. pinMode(A0, INPUT); // Пин A0 - вход (Фоторезистор)
  27. pinMode (2, INPUT); // Пин 2 - вход (Датчик приближения)
  28. pinMode (3, OUTPUT); // Пин 3 - выход (Скорость мотора)
  29. pinMode(4, INPUT); // Пин 4 - вход (Кнопка)
  30. pinMode(5, OUTPUT); // Пин 5 - выход (Мотор)
  31. pinMode(6, OUTPUT); // Пин 6 - выход (Мотор)
  32. pinMode (7, OUTPUT); // Пин 7 - выход (Светодиод)
  33. pinMode (8, OUTPUT); // Пин 8 - выход (Светодиод)
  34. pinMode (12, OUTPUT); // Пин 12 - выход (Светодиод)
  35. timer_init_ISR_1Hz;
  36. }
  37.  
  38. void loop()
  39. {
  40.  
  41. /* Гараж открывается и закрывается по кнопке. */
  42. {
  43.   reading = digitalRead(4); // Присваивем переменной значение с 4 пина (кнопки)
  44.  
  45.   if (reading == HIGH && previous == LOW && millis() - time > debounce) // Если значение кнопки HIGH, до этого было LOW и нет дребежжания
  46.   {
  47.     if (state == HIGH) // Если значение выхода HIGH , то сделать LOW.
  48.       state = LOW;
  49.     else // Иначе оставить
  50.       state = HIGH;
  51.  
  52.     time = millis();    
  53.   }
  54.  
  55.   digitalWrite(8, state); // Значение светодиода = состоянию выхода
  56.  
  57.     if (state == HIGH) // Если значение выхода HIGH , то сервопривод на угол 0
  58.   {
  59.   servo1.write(0);
  60.   }  
  61.   else    // Иначе на 90
  62.   {                      
  63.   servo1.write(90);
  64.   }
  65.  
  66.  
  67.   previous = reading;
  68. }
  69.  
  70. /* Свет включается , если на улице темно. */
  71. {
  72. if (analogRead(A0) < 150) // Если значение фоторезистора меньше 150 , то включить светодиод
  73. {digitalWrite(12, HIGH);
  74.  }
  75. else
  76. {digitalWrite(12, LOW); // Иначе выключить
  77. }
  78. }
  79.  
  80.  
  81.  
  82. /* Если температура больше 27 градусов , то включается вентилятор. */
  83. {
  84. float t = dht.readTemperature();
  85. if (t > 27)
  86. {
  87.  digitalWrite (6, HIGH); // Включить мотор на скорость 200
  88.  digitalWrite (5, LOW);
  89.  analogWrite(3,200);
  90. }
  91. else // Иначе выключить
  92. {
  93.  digitalWrite (6, LOW);
  94.  digitalWrite (5, LOW);
  95. }  
  96. }
  97. }
  98. void timer_handle_interrupts(int timer)
  99. {
  100.   int  move;  // Переменной move присвоить значение Датчика движения              
  101.   move = digitalRead (2);        
  102.    
  103.     if(move == HIGH) // Если есть движение , то включить светодиод и не выключать 40 секунд                
  104.    {            
  105.      digitalWrite (7, HIGH);
  106.      
  107.      
  108.    }
  109.   else // Иначе выключить
  110.    {
  111.     digitalWrite (7, LOW);
  112.  }
  113.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement