#define sclk 13 // nastavení, kde co máme připojeno
#define mosi 11
#define cs 10
#define dc 12
#define rst 8 // není zapojeno
#include <Adafruit_GFX.h> // grafická knihovna
#include <Adafruit_ST7735.h> // ovladač displeje
#include <SPI.h> // SPI
#include <dht11.h> // knihovna pro DHT11
// vytvoření objektu displeje
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, mosi, sclk, rst);
// vytvoření objektu pro DHT11
dht11 DHT11; //
// proměněná pro barvu
int color = 0;
void setup(void) {
// inicializace displeje
tft.initR(INITR_BLACKTAB);
// vyplní pozadí barvou (0 - 255)
tft.fillScreen(200) ;
// přejde na pozici 5 zleva, 20 shora
tft.setCursor(5,20);
// napíše text LightSensor
tft.print("LightSensor");
// přejde na pozici 5 zleva, 40 shora
tft.setCursor(5,40);
tft.print("Soil moisture");
// .....
tft.setCursor(5,60);
tft.print("Temperature");
tft.setCursor(5,80);
tft.print("Humidity");
}
void loop(void) {
// vypisuje hodnotu na řádek 20
// když je hodnota menší než 250
// tak podklad hodnoty zčervená
// poslední proměnná je hodnoty
// analogového vstupu 0
// viz DrawValue(....) níže
DrawValue(20, 250, analogRead(0));
// viz předchozí
DrawValue(40, 250, analogRead(1));
// zjistí hodnoty z DHT11 na pinu 5
DHT11.read(5);
// uloží tyto hodnoty do proměnných
int teplota = DHT11.temperature;
int vlhkost = DHT11.humidity;
// a zobrazí na řádku 60 a 80
DrawValue(60, 250, teplota);
DrawValue(80, 250, vlhkost);
delay(1000); // čeka 1 sekundu
}
// samotná funkce DrawValue
void DrawValue(int row, int redValue, int value){
// DrawValue(řádek, hodnota pod kterou změní barvu, zobrazovaná hodnota)
// když je zobrazovaná hodnota menší než hodnota pod kterou změní barvu
// nastav barvu na červenou, jinak bude barva černá
if (value > redValue) color = ST7735_RED; else color = 0;
// nakresli čtverec v nastavené barvě
tft.fillRect(95,row - 1,20,10 ,color);
// nastav kurzor na pozici
tft.setCursor(96, row);
// napiš hodnotu
tft.print(value);
}