#include <LiquidCrystal.h> //Test využívá knihovnu LiquidCrystal
#include <dht11.h> // importuje knihovnu DHT11
/*******************************************************
Tento program testuje LCD modul 1602 a jeho tlačítka
úprava © Aleš Müller, Březen 2014,
Verze 1
********************************************************/
// využité piny na desce Arduino
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
//stupen "o"
byte stupen[8] = {
0b00110,
0b01001,
0b00110,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
// definice hodnot pro použití s panelem a tlačítky
static int btnPUSHED = 0; // počítadlo stisknutí všech tlačítek
boolean btnPUSH = false; // signalizace právě/stále stisknutého tlačítka
int lcd_key = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
// tato funkce čte hodnotu tlačítek
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // čteme hodnotu ze senzoru
// střední hodnota tlačítek je zhruba tato: 0, 144, 329, 504, 741
// přidáme cca 50 k těmto hodnotám a zkontrolujeme zda jsme blízko
if (adc_key_in > 1000) return btnNONE; // kontrolujeme nejprve tuto možnost, protože to je nejčastější stav
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
return btnNONE; // pokus nic z toho neodpovídá, vracíme tuto hodnotu
}
//vytvoří objekt DHT11 s názvem MojeCidlo
dht11 CidloDHT11; //
void setup()
{
lcd.begin(16, 2); // start knihovny pro LCD
lcd.createChar(1, stupen); // sestavíme si vlastní znak "stupeň"
lcd.setCursor(0,0); // sloupec 0 , řádek 0
lcd.print(" www.santy.cz "); // jednoduchý výpis na LCD
lcd.setCursor(0,1); // sloupec 0 , řádek 1
lcd.print("1602 LCD + DHT11");
delay(5000); // pauza 5 sec
lcd.clear(); // vymažeme displej
lcd.setCursor(0,0);
lcd.print(" www.santy.cz ");
}
void loop()
{
lcd.setCursor(0,1); // přesuneme kurzor na druhý řádek a znak č.13 (vše číslováno od nuly!)
CidloDHT11.read(30); // přečte údaje z čidla DTH11 připojeného na pin 30 (Arduino MEGA)
int hodnota = CidloDHT11.temperature; // přečte hodnotu z D30
int vlhkost = CidloDHT11.humidity;
lcd.setCursor(0,1); // nastaví kurzor na třetí řádek a první znak
lcd.print("t="); // napíše text t =
lcd.print(hodnota); // napíše hodnotu teploty
lcd.write(1); // vypíšeme náš znak pro stupeň
lcd.print("C"); // napíše C
lcd.setCursor(11,1); // nastaví kurzor na čtvrtý řádek a první znak
lcd.print("v="); // napíše text v =
lcd.print(vlhkost); // napíše hodnotu teploty
lcd.print("%"); // napíše %
delay(1000); // čekej 1000ms
lcd.setCursor(0,1); // vrátíme zpět na začátek druhého řádku
lcd_key = read_LCD_buttons(); // přečteme stav tlačítek
switch (lcd_key) // dle toho, které je stisknuto vypíšeme akci
{
case btnRIGHT: // ošetříme stav při stisku tlačítka DOPRAVA
{
if(btnPUSH) break; // pokud už je tlačítko stisknuto, neprovádíme
btnPUSH = true; // nastavíme, že je stisknuto některé tlačítko
break;
}
case btnLEFT:
{
if(btnPUSH) break; // pokud už je tlačítko stisknuto, neprovádíme
btnPUSH = true; // nastavíme, že je stisknuto některé tlačítko
break;
}
case btnUP:
{
if(btnPUSH) break; // pokud už je tlačítko stisknuto, neprovádíme
btnPUSH = true; // nastavíme, že je stisknuto některé tlačítko
break;
}
case btnDOWN:
{
if(btnPUSH) break; // pokud už je tlačítko stisknuto, neprovádíme
btnPUSH = true; // nastavíme, že je stisknuto některé tlačítko
break;
}
case btnSELECT:
{
if(btnPUSH) break; // pokud už je tlačítko stisknuto, neprovádíme
btnPUSH = true; // nastavíme, že je stisknuto některé tlačítko
break;
}
case btnNONE:
{
btnPUSH = false;
break;
}
}
}
Více zde: http://arduino-home.webnode.cz/news/dil-5-cidlo-teploty-a-vlhkosti-lcd-modul-1602-s-tlacitky-/
Vytvořte si vlastní stránky zdarma: http://www.webnode.cz