Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
arduino_s_08 [2020/04/23 19:29] golikov создано |
arduino_s_08 [2020/05/27 15:55] golikov |
||
---|---|---|---|
Строка 15: | Строка 15: | ||
{{:tinkercad_83.png?400|}} | {{:tinkercad_83.png?400|}} | ||
+ | |||
+ | ===== 8.2 Устройство и принцип работы ===== | ||
+ | ==== 8.2.1 Подключение датчика DHT11 ==== | ||
+ | |||
+ | {{:tinkercad_84.png?400|}} | ||
+ | |||
+ | ==== 8.2.2 Работа с библиотекой dht11-master ==== | ||
+ | |||
+ | Напишем программу для считывания показаний температуры и влажности с датчика. | ||
+ | Объявляем датчик, указываем куда подключен out. Считываем информацию с датчика и выводим в монитор порта. Добавим конечно же дополнительную информацию - слова - что же мы выводим в монитор порта и укажем единицы измерения температуры и влажности. | ||
+ | |||
+ | <code c> | ||
+ | #include <dht11.h> //подключаем библиотеку | ||
+ | #define dht11pin 2 //создаем переменную для пина датчика | ||
+ | dht11 DHT; //объявляем датчик температуры и влажности | ||
+ | |||
+ | void setup(){ | ||
+ | pinMode(dht11pin, INPUT); //настраиваем пин датчика как вход | ||
+ | Serial.begin(9600); //настраиваем работу с монитором порта | ||
+ | } | ||
+ | |||
+ | void loop(){ | ||
+ | DHT.read(dht11pin); //считываем показания датчика | ||
+ | //выводим в монитор порта показания температуры | ||
+ | Serial.print("Temperature = "); | ||
+ | Serial.print(DHT.temperature); | ||
+ | Serial.print(" C"); | ||
+ | //выводим в монитор порта показания влажности | ||
+ | Serial.print(", Humidity = "); | ||
+ | Serial.print(DHT.humidity); | ||
+ | Serial.println(" %"); | ||
+ | delay(1000); //ждем 1 секунду | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ==== 8.2.2 Работа с библиотекой SimpleDHT ==== | ||
+ | |||
+ | <code c> | ||
+ | #include <SimpleDHT.h> //подключаем библиотеку | ||
+ | SimpleDHT11 dht11(2); //объявляем датчик температуры и влажности | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); //настраиваем работу с монитором порта | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | byte temperature = 0; //создаем переменные типа byte для хранения показаний датчика | ||
+ | byte humidity = 0; | ||
+ | dht11.read(&temperature, &humidity, NULL); //считываем показания датчика | ||
+ | Serial.print("Temperature = "); //выводим в монитор порта показания температуры | ||
+ | Serial.print(temperature); | ||
+ | Serial.print(" C, "); | ||
+ | Serial.print("Humidity = "); //выводим в монитор порта показания влажности | ||
+ | Serial.print(humidity); | ||
+ | Serial.println(" %"); | ||
+ | delay(1000); //ждем 1 секунду | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ==== 8.2.3 Работа с библиотекой DHT sensor library==== | ||
+ | |||
+ | <code c> | ||
+ | #include "DHT.h" //подключаем библиотеку | ||
+ | #define DHTpin 2 //переменная для пина датчика | ||
+ | #define DHTtype DHT11 //переменная для типа датчика | ||
+ | DHT dht(DHTpin, DHTtype); //инициализируем датчик | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); //настраиваем работу с монитором порта | ||
+ | dht.begin(); //запускаем работу датчика | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | float hum = dht.readHumidity(); //считываем показания влажности | ||
+ | float temp = dht.readTemperature(); //считываем показания температуры в градусах Цельсия | ||
+ | float tempF = dht.readTemperature(true); //считываем показания температуры в градусах Фаренгейта | ||
+ | Serial.print("Temperature: "); //выводим в монитор порта все три вида показаний датчика | ||
+ | Serial.print(temp); | ||
+ | Serial.print(" C, "); | ||
+ | Serial.print(tempF); | ||
+ | Serial.print(" F; "); | ||
+ | Serial.print("Humidity: "); | ||
+ | Serial.print(hum); | ||
+ | Serial.println(" %;"); | ||
+ | delay(1000); //ждем 1 секунду | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ==== 8.2.4 Работа с библиотекой DHT sensor library==== | ||
+ | <code c> | ||
+ | #include "DHT.h" //подключаем библиотеку | ||
+ | #define DHTpin 2 //переменная для пина датчика | ||
+ | #define DHTtype DHT11 //переменная для типа датчика | ||
+ | DHT dht(DHTpin, DHTtype); //инициализируем датчик | ||
+ | //создаем переменные для каждого из пинов RGB светодиода | ||
+ | int redLed = 11; | ||
+ | int greenLed = 10; | ||
+ | int blueLed = 9; | ||
+ | //создаем переменные для значения яркости каждого из цветов RGB светодиода | ||
+ | int red; | ||
+ | int green; | ||
+ | int blue; | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); //настраиваем работу с монитором порта | ||
+ | dht.begin(); //запускаем работу датчика | ||
+ | pinMode(redLed, OUTPUT); //настраиваем пины RGB светодиода как выходы | ||
+ | pinMode(greenLed, OUTPUT); | ||
+ | pinMode(blueLed, OUTPUT); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | //считываем показания влажности | ||
+ | float hum = dht.readHumidity(); | ||
+ | //считываем показания температуры в градусах Цельсия | ||
+ | float temp = dht.readTemperature(); | ||
+ | //считываем показания температуры в градусах Фаренгейта | ||
+ | float tempF = dht.readTemperature(true); | ||
+ | //выводим в монитор порта все три вида показаний датчика | ||
+ | Serial.print("Temperature: "); | ||
+ | Serial.print(temp); | ||
+ | Serial.print(" C, "); | ||
+ | Serial.print(tempF); | ||
+ | Serial.print(" F; "); | ||
+ | Serial.print("Humidity: "); | ||
+ | Serial.print(hum); | ||
+ | Serial.println(" %;"); | ||
+ | delay(1000); | ||
+ | //если температура меньше 25 градусов | ||
+ | //цвет RGB светодиода - зеленый | ||
+ | if(temp<25){ | ||
+ | setRGB(0, 255, 0); | ||
+ | } | ||
+ | //если температура от 25 до 30 градусов | ||
+ | //цвет RGB светодиода - желтый | ||
+ | else if(temp>=25 && temp<30){ | ||
+ | setRGB(255, 255, 0); | ||
+ | } | ||
+ | //иначе цвет RGB светодиода красный | ||
+ | else{ | ||
+ | setRGB(255, 0, 0); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | //Подпрограмма, которая устанавливает цвет свечения RGB светодиода | ||
+ | //Данная функция имеет 3 параметра | ||
+ | //r - яркость свечения красного цвета | ||
+ | //g - яркость свечения зеленого цвета | ||
+ | //b - яркость свечения синего цвета | ||
+ | |||
+ | void setRGB(int r,int g,int b){ | ||
+ | analogWrite(redLed,r); | ||
+ | analogWrite(greenLed,g); | ||
+ | analogWrite(blueLed,b); | ||
+ | } | ||
+ | |||
+ | |||
+ | </code> | ||
+ | |||
+ | =====Задания===== | ||
+ | |||
+ | 1. Соберите схему с датчиком DHT11 и сервомотором. Создайте программу, которая будет поворачивать вал сервомотора на 90 градусов (открывать окно в теплицу) при превышении температуры значения в 35 градусов, и возвращать вал сервомотора в исходное положение при изменении температуры ниже 33 градусов. | ||
+ | |||
+ | 2. Соберите схему с датчиком DHT11 и сервомотором. Создайте программу, которая будет включать реле управляющее "подогревом" при изменении температуры ниже 10 градусов, и отключении при изменении выше 12 градусов. При повышении температуры выше 28 градусов должно срабатывать реле, включающее "кондиционер", и отключатся, когда температура ниже 26 градусов. | ||
+ | |||