Měření teploty s Arduino Uno, LCD displejem a NTC čidlem
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;
}