Термометр с выводом данных на ЖХ-дисплей на основе Arduino Uno

В этом уроке мы покажем вам как сделать ЖК-термометр на основе Arduino UNO и аналогового температурного датчика LM35/36.

Этот проект очень хорошо подойдет для начинающих, он не требует каких-либо специальных технических навыков или навыков программирования, и вам понадобится достаточно немного времени для реализации проекта.

Шаг 1: Сбор деталей

Вот что нам нужно для создания термометра:

Arduino UNO

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);
}

В итоге у нас получился вот такой результат:

Хороших вам проектов!

Ардуино+