Простой термо-гигрометр на ардуино…
Как и что подключать вы без труда поймете из принципиальной
схемы. Выводы датчика подключаем S на А0, питание на +5В (к плате ардуино), и минус к GND. Обратите внимание что на
датчике 4 вывода, но использоваться будут только 3. Дисплей LCD подключается как и в прошлом проекте:
VCC на +5, GND на GND, SDA на А4, SLC на А5.
Итак, все подключили (еще раз сверьтесь со схемой) пора
заняться программированием МК. Скетч я нашел готовый в интернете, который
неплохо будет работать. Сам скетч беремс яндекс диска жми сюда. Как видите все просто, можно даже и не уметь
программировать на Си+, но тем не менее практически работать с МК.
Еще одно важное замечание. Перед тем как начать
компиляцию, обязательно установите библиотеки (на этот раз две): DHT и
LiquidCrystal_I2C. Так же эти библиотеки можно загрузить с Яндекс диска: библиотека DHT здесь, а LiquidCrystal_I2Cздесь. Вот теперь устанавливаем отсутвующие библиотеки (в стандартный набор
библиотек они не входят). Если какой-то из этих библиотек вы не установили то
при попытке скомпилировать будет ошибка.
Надеемся, что все у вас получилось. И в случае успеха на
экране появиться температура и влажность. Убедимся, что датчик работает: можно
на него подышать, и тем самым нагнать и температуру и влажность.
Скетч нашего
проекта:
#include <Wire.h> // Добавляем необходимые
библиотеки
#include
<LiquidCrystal_I2C.h>
#include
"DHT.h"
#define DHTPIN A0 // к какому пину будет подключен
сигнальный выход датчика
//выбор используемого датчика
#define DHTTYPE DHT11 // DHT 11
//#define
DHTTYPE DHT22 // DHT 22 (AM2302)
//#define
DHTTYPE DHT21 // DHT 21 (AM2301)
//инициализация датчика
DHT
dht(DHTPIN, DHTTYPE);
byte degree[8] = // кодируем символ градуса
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};
LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и
размерность дисплея
void setup()
{
lcd.init(); // Инициализация lcd
lcd.backlight(); // Включаем подсветку
lcd.createChar(1, degree); // Создаем символ под номером
1
Serial.begin(9600);
dht.begin();
}
void loop() {
// Добавляем паузы в несколько секунд между измерениями
delay(2000);
//
Reading temperature or humidity takes about 250 milliseconds!
//
Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h
= dht.readHumidity();
// Read
temperature as Celsius
float t
= dht.readTemperature();
// Read
temperature as Fahrenheit
float f
= dht.readTemperature(true);
// Выводим показания влажности и температуры
lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1
строки
lcd.print("Hum = % "); // Выводим текст
lcd.setCursor(7, 0); // Устанавливаем курсор на 7 символ
lcd.print(h, 1); // Выводим на экран значение влажности
lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2
строки
lcd.print("Temp = \1C "); // Выводим текст, \1
- значок градуса
lcd.setCursor(7, 1); // Устанавливаем курсор на 7 символ
lcd.print(t,1); // Выводим значение температуры
}
Я тут сделал как ты показывал и у меня на дисплей не выводятся сами показания.
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьни хрена не работает
ОтветитьУдалить