#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
// pantailaren neurriak
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
//Pantaila hasi
Adafruit_SSD1306 pantaila(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// hezetasun sentsorea hasi
#define DHTPIN 7
#define DHTTYPE DHT22
DHT sentsorea(DHTPIN, DHTTYPE);
// Led-ak
int ledGorria = 9;
int ledBerdea = 8;
int ledHoria = 3;
void setup() {
Serial.begin(9600);
pinMode(ledGorria, OUTPUT);
pinMode(ledBerdea, OUTPUT);
pinMode(ledHoria, OUTPUT);
sentsorea.begin();
// OLED pantaila hasi
if(!pantaila.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("OLED ERROREA");
while(true);
}
pantaila.clearDisplay();
pantaila.setTextColor(WHITE);
pantaila.setTextSize(1);
pantaila.setCursor(10,20);
pantaila.println("HEZETASUN");
pantaila.display();
delay(2000);
}
void loop() {
//funtzio berria hasi
hezetasunAtala();
}
void hezetasunAtala()
{
//Baloreak irakurri
float hezetasuna = sentsorea.readHumidity();
// Irakurri errorea
if (isnan(hezetasuna)) {
Serial.println("DHT22 ERROREA");
return;
}
// LED guztiak itzali
digitalWrite(ledGorria, LOW);
digitalWrite(ledBerdea, LOW);
digitalWrite(ledHoria, LOW);
// Hezetasun mailak
if(hezetasuna < 40) {
digitalWrite(ledBerdea, HIGH);
}
else if(hezetasuna >= 40 && hezetasuna < 70) {
digitalWrite(ledHoria, HIGH);
}
else {
digitalWrite(ledGorria, HIGH);
}
// Pantaila garbitu
pantaila.clearDisplay();
//pantailan datuak agertu
pantaila.setCursor(0,20);
pantaila.print("Hezetasuna: ");
pantaila.print(hezetasuna);
pantaila.println(" %");
pantaila.setCursor(0,45);
//Hezetasunaren arabera gauza bat jarri
if(hezetasuna < 40) {
pantaila.println("HEZETASUN LEHORRA");
}
else if(hezetasuna < 70) {
pantaila.println("HEZETASUN ERTAINA");
}
else {
pantaila.println("HEZETASUN HANDIA");
pantaila.println("FUGA");
}
pantaila.display();
delay(1000);
}