prosím poraďte začátečníkovi...,
Mám úspěšně zprovozněn senzor HTU21D podle návodu https://navody.arduino-shop.cz/navody-k ... d-i2c.html v kombinaci s 1602 dislpejem rovněž podle návodu https://navody.arduino-shop.cz/zaciname ... splej.html, přičemž u displeje (protože jelito "ještě" nemám i2c obvod, tak to mám tím neúsporným zapojením přes 10 vodičů). (u toho jsem zachoval komunikaci přes seriový "monitor" v PC kdyby displej zlobil).
mám to na Arduino nano, a co bych chtěl, je přidat druhý senzor HTU21D, pokud možno přímo, a vypisovat tímpádem dvojí hodnoty oproti tomuto výchozímu programu. O výpis na displej popřípadě do PC se postarám posléze, zajímá mě zapojení a ošetření v programu pokud to je takto možné.
Aktuální kód:
Kód: Vybrat vše
#include <SparkFunHTU21D.h>
#include <Wire.h>
#include <LiquidCrystal.h> // knihovna pro LCD displej
// inicializace senzoru z knihovny
HTU21D mujHTU;
// inicializace pinu, lze vyměnit za jiné volné
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// komunikace po sériové lince rychlostí 9600 baud
Serial.begin(9600);
// zahájení komunikace se senzorem
mujHTU.begin();
// nastavení počtu znaků a řádků LCD, zde 16x2
lcd.begin(16, 2);
// vytisknutí hlášky na první řádek
lcd.print("Mereni Teploty");
// nastavení kurzoru na první znak, druhý řádek
// veškeré číslování je od nuly, poslední znak je tedy 15, 1
// problik displeje při startu
lcd.setCursor ( 0, 0 );
lcd.print("-*-*-*-*-*-*-*-*");
lcd.setCursor ( 0, 1 );
lcd.print("*-*-*-*-*-*-*-*-");
delay(1000);
lcd.setCursor ( 0, 0 );
lcd.print("*-*-*-*-*-*-*-*-");
lcd.setCursor ( 0, 1 );
lcd.print("-*-*-*-*-*-*-*-*");
delay(1000);
lcd.clear();
}
void loop() {
// načtení informací o teplotě a vlhkosti
// do proměnných
float teplota = mujHTU.readTemperature();
float vlhkost = mujHTU.readHumidity();
if (teplota > 125 | vlhkost > 100) {
Serial.println("Chyba komunikace se senzorem HTU21D!");
lcd.print("Chyba HTU21D!");
delay(2000);
}
else {
// vytištění naměřených údajů, 1 ve výpisu označuje
// počet desetinných míst
lcd.clear();
Serial.print("HTU21D | Teplota: ");
Serial.print(teplota, 1);
lcd.setCursor ( 0, 0 );
lcd.print("Teplota: ");
lcd.print(teplota,1);
Serial.print(" st C | ");
Serial.print("Vlhkost: ");
Serial.print(vlhkost, 1);
lcd.setCursor ( 0, 1 );
lcd.print("Vlhkost: ");
lcd.print(vlhkost,1);
Serial.print("%");
lcd.print("%");
Serial.println();
}
// pauza 0,5 sekundy mezi výpisy
delay(500);
}