В этом уроке мы покажем вам как сделать ЖК-термометр на основе Arduino UNO и аналогового температурного датчика LM35/36.
Этот проект очень хорошо подойдет для начинающих, он не требует каких-либо специальных технических навыков или навыков программирования, и вам понадобится достаточно немного времени для реализации проекта.
Шаг 1: Сбор деталей
Вот что нам нужно для создания термометра:
1x макетная плата
ЖК-дисплей 16x2
LM35 или LM36 аналоговый температурный датчик
10К потенциометр для регулировки яркости дисплея (можете использовать и 50К)
19 перемычек для подключения всего
Вы можете заказать это всё на официальной сайте Arduino или в любом интернет-магазине, который продает всё для радиолюбителей. Вы можете купить всё отдельно в следующих магазинах: Adafruit, SparkFun, Aliexpress, Banggood и т.д.
Шаг 2: Собираем схему
Следуя приведенной выше схеме Fritzing, подключите ЖК-дисплей к макету, а затем подключите его к плате Arduino с помощью перемычек. После этого вставьте потенциометр и датчик в макет, соедините левый и правый выводы с землей и + 5 В, а средний - с ЖК-дисплеем.
Затем подключите датчик к земле и к + 5 В и к Arduino, но будьте очень осторожны, потому что, если вы подключите его неправильно, датчик нагреется до 280+ C (540 F) и может повредиться. После того, как вы подключили все, переходите к следующему шагу.
Шаг 3: Программирование Arduino
Вы должны использовать один из двух скетчей ниже. Загрузите его в Arduino, используя интегрированную среду разработки IDE, которую вы можете скачать с официальной страницы Arduino.
Если вы ничего не видите на ЖК-дисплее или видите прямоугольники, поверните потенциометр против или по часовой стрелке пока не увидите, что всё очищено. Теперь у вас есть термометр и вы сможете измерять температуру воздуха вокруг вас, внутри вашего дома или снаружи.
Код 1
// initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // initialize our variables int sensorPin = 0; int tempC, tempF; void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); } void loop() { tempC = get_temperature(sensorPin); tempF = celsius_to_fahrenheit(tempC); lcd.setCursor(0,0); lcd.print(tempF); lcd.print(" "); lcd.print((char)223); lcd.print("F"); delay(200); } int get_temperature(int pin) { // We need to tell the function which pin the sensor is hooked up to. We're using // the variable pin for that above // Read the value on that pin int temperature = analogRead(pin); // Calculate the temperature based on the reading and send that value back float voltage = temperature * 5.0; voltage = voltage / 1024.0; return ((voltage - 0.5) * 100); } int celsius_to_fahrenheit(int temp) { return (temp * 9 / 5) + 32; }
Код 2
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Digital pins to which you connect the LCD const int inPin = 0; // A0 is where you connect the sensor void setup() { lcd.begin(16,2); } void loop() { int value = analogRead(inPin); // read the value from the sensor lcd.setCursor(0,1); float millivolts = (value / 1024.0) * 5000; float celsius = millivolts / 10; lcd.clear(); lcd.setCursor(0,0); lcd.print(celsius); lcd.print("C"); lcd.setCursor(0,1); lcd.print((celsius * 9)/5 + 32); //turning the celsius into fahrehait lcd.print("F"); delay(1000); }
В итоге у нас получился вот такой результат:
Хороших вам проектов!