Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h> // Включаем библиотеку Сервопривода
- #include <DHT.h> // Включаем библиотеку Термометра
- const int move_sensor = 2; // Пин Датчика Приближения
- const int motor_ENB = 3; // Пин скорости мотора
- const int button = 4; // Пин Кнопки
- const int motor1_IN3 = 5; // Пин Мотора на Драйвер_1 L298N
- const int motor2_IN4 = 6; // Пин Мотора на Драйвер_2 L298N
- const int LEDpin1 = 7; // Пин Светодиода_1
- const int LEDpin2 = 8; // Пин Светодиода_2
- const int DHTPIN = 11; // Пин Датчика Температуры
- const int LEDpin3 = 12; // Пин Светодиода_3
- int state = LOW; // Переменная состояния выхода
- int reading; // Переменная значения кнопки в данный момент
- int previous = HIGH; // Переменная предыдущего значения кнопки
- #define DHTTYPE DHT11 // Тип Датчика Температуры (DHT11)
- DHT dht(DHTPIN, DHTTYPE); // Обозначаем Датчик Температуры для Библиотеки
- long time = 0; // Переменная последнего времени , когда выход был переключен
- long debounce = 200; // Переменная дребежжания
- Servo servo1; // Обозначаем Сервопривод для Библиотеки Сервоприводов
- void setup()
- {
- servo1.attach(3); // Подключить Сервопривод Пин - 3
- pinMode(A0, INPUT); // Пин A0 - вход (Фоторезистор)
- pinMode (2, INPUT); // Пин 2 - вход (Датчик приближения)
- pinMode (3, OUTPUT); // Пин 3 - выход (Скорость мотора)
- pinMode(4, INPUT); // Пин 4 - вход (Кнопка)
- pinMode(5, OUTPUT); // Пин 5 - выход (Мотор)
- pinMode(6, OUTPUT); // Пин 6 - выход (Мотор)
- pinMode (7, OUTPUT); // Пин 7 - выход (Светодиод)
- pinMode (8, OUTPUT); // Пин 8 - выход (Светодиод)
- pinMode (12, OUTPUT); // Пин 12 - выход (Светодиод)
- timer_init_ISR_1Hz;
- }
- void loop()
- {
- /* Гараж открывается и закрывается по кнопке. */
- {
- reading = digitalRead(4); // Присваивем переменной значение с 4 пина (кнопки)
- if (reading == HIGH && previous == LOW && millis() - time > debounce) // Если значение кнопки HIGH, до этого было LOW и нет дребежжания
- {
- if (state == HIGH) // Если значение выхода HIGH , то сделать LOW.
- state = LOW;
- else // Иначе оставить
- state = HIGH;
- time = millis();
- }
- digitalWrite(8, state); // Значение светодиода = состоянию выхода
- if (state == HIGH) // Если значение выхода HIGH , то сервопривод на угол 0
- {
- servo1.write(0);
- }
- else // Иначе на 90
- {
- servo1.write(90);
- }
- previous = reading;
- }
- /* Свет включается , если на улице темно. */
- {
- if (analogRead(A0) < 150) // Если значение фоторезистора меньше 150 , то включить светодиод
- {digitalWrite(12, HIGH);
- }
- else
- {digitalWrite(12, LOW); // Иначе выключить
- }
- }
- /* Если температура больше 27 градусов , то включается вентилятор. */
- {
- float t = dht.readTemperature();
- if (t > 27)
- {
- digitalWrite (6, HIGH); // Включить мотор на скорость 200
- digitalWrite (5, LOW);
- analogWrite(3,200);
- }
- else // Иначе выключить
- {
- digitalWrite (6, LOW);
- digitalWrite (5, LOW);
- }
- }
- }
- void timer_handle_interrupts(int timer)
- {
- int move; // Переменной move присвоить значение Датчика движения
- move = digitalRead (2);
- if(move == HIGH) // Если есть движение , то включить светодиод и не выключать 40 секунд
- {
- digitalWrite (7, HIGH);
- }
- else // Иначе выключить
- {
- digitalWrite (7, LOW);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement