Всем привет, давайте сегодня поработаем с еще одним элементом, который входит в комплект Arduino, это терморезистор.
Он выглядит как небольшая черная спичечная головка, надеюсь Вам видно, я вынес ее специально на отдельную монтажную плату, чтобы не захламлять все существующие подключения.
Обратите внимание, черный это минус мы его берем с основной платы, где находится дисплей, красный у нас это плюс 5 вольт приходит на крайнюю ножку терморезистора, белый провод приходит в ардуино в разъем A0 – нулевой аналоговый разъем и здесь в средней точке подключается между сопротивлением на 10кОм и терморезистором.
Давайте теперь напишем скетч и посмотрим, какие данные будет давать терморезистор на LCD дисплей. Уберём из кода мусор, и пропишем некоторые переменные и константы. Как всегда, если мы работаем с дисплеем, надо подключать библиотеку liquidcrystal.
#include < LiquidCrystal.h>
Определим, какие контакты у нас используются в LCD, далее объявим константу analogPin для A0, объявим магическое число beta 4090, это величина, я так понимаю, снимаемая с терморезистора и объявим переменную Resistance – сопротивление, это величина 10 кОм которые мы используем.
LiquidCrystal lcd(4, 6, 10, 11, 12, 13); #define analogPin A0 #define beta 4090 #define resistance 10
В подпрограмме setup мы подключаемся к LCD дисплею, указываем, что он у нас две строки по 16 символов, и изначально мы его очищаем.
void setup()
{
lcd.begin(16, 2);
lcd.clear();
}
В цикле loop мы получим данные с аналогового разъёма путем analogRead из A0. Затем вставим такую длинную формулу для получения температуры в градусах Цельсия:
void loop()
{
long a =analogRead(analogPin);
float tempC = beta /(log((1025.0 * resistance / a - resistance) / resistance) + beta / 298.0) - 273.0;
...........
мы делим бета на выражение, вычисляем логарифм 1025 умноженное на сопротивление, делённое на значение analogPin минус сопротивление, за скобкой деленное на сопротивление, плюс бета деленное на 298 и минус 273.
Далее более простая формула - получим температуру в системе Фаренгейта, здесь мы умножаем на 1.8 полученную ранее температуру в градусах и прибавляем 32. Так мы получим Фаренгейт.
float tempF = 1.8*tempC + 32.0;
Теперь мы установим курсор в нулевую позицию на экране, выведем на печать методом print текст Temp, как вы помните из прошлых видео, кириллицу этот дисплей не поддерживает, напишем на английском. Далее выводим в этой же строке переменную tempС, которую получили ранее, весь текст будет в одном ряду, и мы выводим чуть дальше обозначение градусов Цельсия.
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC);
lcd.print(" C");
Обратите внимание, здесь раз-два-три пробела, чтобы текст отделялся от переменной. Затем мы устанавливаем курсор на вторую строку, для примечания напишу, что это вторая строка. Ну а это у нас первая строка. Установили курсор, вывели на второй строчке Fahr Фаренгейт и вывели переменную tempF.
lcd.setCursor(0, 1);
lcd.print("Fahr: ");
lcd.print(tempF);
Также обратите внимание, тут присутствует 1 пробел, и мы выходим снова текст обозначающий единицу измерения температуры тут тоже один пробел, чтобы отделиться от этого значения.
lcd.print(" F");
delay(200);
}
И в конце делаем задержку в 200 миллисекунд. Форматируем наш скетч (ctrl+T), уберём лишние строки, всё у нас вроде как помещается. Давайте сохраним скетч на рабочий стол, подключим Arduino и теперь давайте его проверим и загрузим. Выполнили проверку, ошибок нет, зальём код в Arduino и посмотрим, что покажет терморезистор.
#include < LiquidCrystal.h>
LiquidCrystal lcd(4, 6, 10, 11, 12, 13);
#define analogPin A0
#define beta 4090
#define resistance 10
void setup()
{
lcd.begin(16, 2);
lcd.clear();
}
void loop()
{
long a =analogRead(analogPin);
float tempC = beta /(log((1025.0 * resistance / a - resistance) / resistance) + beta / 298.0) - 273.0;
float tempF = 1.8*tempC + 32.0;
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Fahr: ");
lcd.print(tempF);
lcd.print(" F");
delay(200);
}Как и ожидалось, показываются градусы по Цельсию и по Фаренгейту, если прижать терморезистор пальцами, то температура на дисплее начнет увеличиваться, но точный градусник из этого вряд ли получится. Хотя если долго держать в руках возможно терморезистор покажет температуру близкую к температуре тела.
Так все это и работает, настроим отображение текста на дисплее, и проверим, как будет видно его в темноте. Вполне различимо и нормально видно.
Помимо простого наблюдения за температурой, немного доработав код скетча, можно выполнять действительно полезное дело. Например, добавив несколько строк кода с условием при температуре между 22 и 28 градусами, на 12 пин подадим напряжение, и включим реле, которое в свою очередь включит вентилятор.
if (tempC > 22 && tempC < 28) //оптимальный температурный режим для включения вентилятора
{
digitalWrite(12,HIGH); // подадим напряжение на 12 пин и включим реле
}
Реле, которые продаются на AliExpress и есть в комплекте к обучающему набору ардуино, вполне смогут коммутировать не только вентилятор, так как максимальный ток указан 10 ампер. Но работу с реле рассмотрим в следующий раз, так что впереди много чего интересного.
Подключаем терморезистор к arduino, получим температуру в градусах по Цельсию и по Фаренгейту
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилось? Поделись этим видео с друзьями!
Подключаем терморезистор к arduino, получим температуру в градусах по Цельсию и по Фаренгейту
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на видео ВКонтакте, там Вы найдете много интересного, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилось? Поделись этим видео с друзьями!
Подключаем терморезистор к arduino, получим температуру в градусах по Цельсию и по Фаренгейту
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в Рутубе, там Вы найдете много интересного, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилось? Поделись этим видео с друзьями!