Chcete-li přidat svému DIY projektu praktickou funkci nebo jen hledáte inspiraci pro svůj další výtvor s Arduino, nemusíte hledat dál. Máme pro vás návod, jak využít Arduino Uno spolu s LCD displejem pro měření teploty – ideální pro domácí meteorologickou stanici nebo pro monitorování prostředí pro vaše elektronické projekty.

Zapojení využívá Arduino Uno, LCD displej s I2C rozhraním a jednoduchý NTC termistor. Spojení všech těchto komponent vám umožní nejen zaznamenávat teplotu, ale také ji elegantně zobrazit.

Kód, který je přiložen, je skvělým příkladem toho, jak snadné je začít s Arduinem a senzory. Začínáme inicializací LCD displeje, zobrazujeme uvítací zprávu a pak čekáme na přípravu měření termistoru. Ve smyčce loop pak čteme analogovou hodnotu z termistoru, vypočítáme teplotu pomocí Steinhart-Hart rovnice a zobrazíme ji na LCD.

Tento projekt je skvělý pro začátečníky i pokročilé uživatele. Ukazuje, jak lze snadno integrovat různé komponenty a získat tak užitečné a informativní výstupy. Ať už jste domácí kutil nebo student, tento projekt vám přinese základní znalosti o čtení senzorů a práci s LCD displeji.

Tak co říkáte, nechcete si vyzkoušet vytvořit vlastní digitální teploměr? S naším podrobným výkladem a vaším nadšením pro tvorbu je to snazší, než si myslíte.
A výsledek? Budete mít stylový a funkční přístroj, kterým můžete okamžitě sledovat teplotu kdekoli si přejete!

Zapojení:


Kód:

#include <LiquidCrystal_I2C.h> // Připojení knihovny pro ovládání LCD displeje přes I2C
#include <math.h> // Připojení matematické knihovny pro funkci log()
// Inicializace objektu pro ovládání LCD displeje na adrese 0x27, s rozměry 16x2 znaky
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
  lcd.init(); // Inicializace LCD displeje
  lcd.backlight(); // Zapnutí podsvícení displeje
  // Zobrazení uvítací zprávy
  lcd.setCursor(0, 0); // Nastavení kurzoru na první řádek, první sloupec
  lcd.print("Ahoj svete,"); // Výpis textu na první řádek
  lcd.setCursor(0, 1); // Nastavení kurzoru na druhý řádek, první sloupec
  lcd.print("Merim teplotu"); // Upravený text pro druhý řádek
  delay(2000); // Krátká pauza před začátkem měření
  analogReference(DEFAULT); // Nastavení referenčního napětí pro analogové čtení
}
void loop() {
  int analogovaHodnota = analogRead(A0); // Čtení analogové hodnoty z pinu A0
  double teplota = nactiTermistor(analogovaHodnota); // Výpočet teploty z analogové hodnoty
  // Zobrazení vypočítané teploty na LCD
  lcd.clear(); // Vymazání obsahu displeje pro aktualizaci hodnoty
  lcd.setCursor(0, 0); // Nastavení kurzoru na první řádek
  lcd.print("Teplota: ");
  lcd.setCursor(0, 1); // Nastavení kurzoru na druhý řádek
  lcd.print(teplota);
  lcd.print(" C");
  delay(1000); // Aktualizace hodnoty teploty každou sekundu
}
// Funkce pro výpočet teploty z analogové hodnoty NTC termistoru
double nactiTermistor(int hodnota) {
  double teplota;
  // Výpočet teploty pomocí Steinhart-Hart rovnice
  teplota = log(((10240000 / (1024-hodnota)) - 10000));
  teplota = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * teplota * teplota)) * teplota);
  teplota = teplota - 273.15; // Konverze z Kelvina na Celsia
  return teplota;
}