Advertisement
Igorochenka

Umnie_Dom_3

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