Hmm przepraszam bardzo że tego nie powiedziałem - ogólnie cały kod obecny wygląda następująco :
Kopiuj
#include "DHT.h" // Biblioteka czujnika DHT 22
#include "U8glib.h" // Bibioteka OLED I2C
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C(TWI)
#define DHTPIN 2 // Definicja PINu sygnałowego
#define DHTTYPE DHT22 // Wybór typu czujnika : DHT 22
DHT dht(DHTPIN, DHTTYPE, 6); // Definicja czujnika
char str[10]; // znak stopni celsujsza i procent
int WILG; // Zmienna wilgotność
float TEMP; // Zmienna temperatura
unsigned long aktualnyCzas = 0; // do millis
unsigned long zapamietanyCzas = 0; // do millis
int relay_pin = 8; // przekaznik
int relay_pin2 = 12; // przekaznik
int relay_pin3 = 7; // przekaznik
int relay_pin4 = 9;
#define led_info_promiennik 4 // dioda od promiennika
#define led_info_generator 13 // dioda od generatora pary
#define led_info_nic 1
int potencjometr = A0; // Odczyt napiecia z potencjometru pinem analogowym 0
int wartosc = 0; // Zmienna przechowujaca wartość napięcia odczytanego
int dane[5]; // Uśrednienie odczytu wartości z potencjometru
int i=0; // Uśrednienie odczytu wartości z potencjometru
int srednia; // Uśrednienie odczytu wartości z potencjometru
void setup()
{
dht.begin(); // inicjalizacja DHT
pinMode(potencjometr, INPUT); //pin A0 (pot) jako wejście
pinMode(relay_pin, OUTPUT);
pinMode(relay_pin2, OUTPUT); // Ustawienie PINu jako wyjście
pinMode(relay_pin3, OUTPUT); // Ustawienie PINu jako wyjście
pinMode(relay_pin4, OUTPUT);
digitalWrite(relay_pin, HIGH);
digitalWrite(relay_pin2, HIGH);
digitalWrite(relay_pin3, HIGH);
digitalWrite(relay_pin4, HIGH);
pinMode(led_info_promiennik, OUTPUT);
pinMode(led_info_generator, OUTPUT);
pinMode(led_info_nic, OUTPUT);
}
void draw(void){
u8g.firstPage(); // Rozpoczęcie pętli obrazu
do {
u8g.setFont(u8g_font_helvB08); // Wybór czcionki
u8g.drawStr( 2, 27, "Zmniejszanie wilgotnosci!"); // Definicja pozycji na ekranie oraz wyświetlanie tekstu
u8g.drawStr( 2, 42, "Wilgotnosc :");
u8g.drawStr( 80, 42, dtostrf(WILG, 5, 2, str));
u8g.drawStr( 110, 42, "%");
u8g.drawStr( 2, 57, "Wilg. zad.:");
u8g.drawStr( 80, 57, dtostrf(wartosc, 5, 2, str));
u8g.drawStr( 110, 57, "%");
} while( u8g.nextPage() ); // Zakończenie pętli obrazu
}
void draw2(void){
u8g.firstPage();
do {
u8g.setFont(u8g_font_helvB08); // czcionka
u8g.drawStr( 2, 27, "Zwiekszanie wilgotnosci!");
u8g.drawStr( 2, 42, "Wilgotnosc :");
u8g.drawStr( 80, 42, dtostrf(WILG, 5, 2, str));
u8g.drawStr( 110, 42, "%");
u8g.drawStr( 2, 57, "Wilg. zad.:");
u8g.drawStr( 80, 57, dtostrf(wartosc, 5, 2, str));
u8g.drawStr( 110, 57, "%");
} while( u8g.nextPage() ); // koniec petli obrazu
}
void draw3(void){
u8g.firstPage();
do {
u8g.setFont(u8g_font_helvB08); // czcionka
u8g.drawStr( 2, 27, "Strefa Nieczulosci");
u8g.drawStr( 2, 42, "Wilgotnosc :");
u8g.drawStr( 80, 42, dtostrf(WILG, 5, 2, str));
u8g.drawStr( 110, 42, "%");
u8g.drawStr( 2, 57, "Wilg. zad.:");
u8g.drawStr( 80, 57, dtostrf(wartosc, 5, 2, str));
u8g.drawStr( 110, 57, "%");
} while( u8g.nextPage() ); // koniec petli obrazu
}
void loop() {
aktualnyCzas = millis();
if (aktualnyCzas - zapamietanyCzas >= 50UL) {
//Zapamietaj aktualny czas
zapamietanyCzas = aktualnyCzas;
}
WILG = dht.readHumidity(); // Funkcja odczytująca aktualną wartość wilgotności
TEMP = dht.readTemperature(); // Funkcja odczytująca aktualną wartość temperatury
dane[i] = analogRead(A0);
wartosc = map(dane[i], 0, 1023, 0, 100);
i = (i + 1) % 5;
srednia = 0;
for(int j = 0; j < 5; j++)
srednia += dane[j];
srednia /= 5.0;
// PETLA OD WARUNKOW
if(wartosc>(WILG+2)) {
u8g.firstPage();
do {
draw2();
} while (u8g.nextPage() );
digitalWrite(relay_pin3, HIGH); // Wyłączenie wentylatora
digitalWrite(relay_pin4, HIGH); // Wyłączenie wentylatora
digitalWrite(relay_pin, HIGH); // Wyłączenie generatora pary
digitalWrite(relay_pin2, LOW); // Włączenie promiennika podczerwieni
digitalWrite(led_info_promiennik, HIGH); // Włączenie diody od promiennika podczerwieni
digitalWrite(led_info_generator, LOW); // Wyłączenie diody od generatora pary
digitalWrite(led_info_nic, LOW); // Wyłączenie diody od Strefy Nieczułosci(Strefy Histerezy)
}
else if(wartosc<(WILG-2)){
do {
draw();
} while (u8g.nextPage() );
digitalWrite(relay_pin2, HIGH); //Wyłączenie promiennika podczerwieni
digitalWrite(relay_pin3, LOW); // Włączenie wentylatora
digitalWrite(relay_pin4, LOW); //Włączenie wentylatora
digitalWrite(relay_pin, LOW); // Włączenie generatora pary
digitalWrite(led_info_generator, HIGH); //Włączenie diody od generatora pary
digitalWrite(led_info_promiennik, LOW); //Wyłączenie diody od promiennika podczerwieni
digitalWrite(led_info_nic, LOW); // Wyłączenie diody od Strefy Nieczułosci(Strefy Histerezy)
}
else {
u8g.firstPage();
do {
draw3();
} while (u8g.nextPage() );
digitalWrite(relay_pin, HIGH); // Wyłaczenie generatora pary
digitalWrite(relay_pin2, HIGH); // Wyłączenie promiennika podczerwieni
digitalWrite(relay_pin3, HIGH); // Wyłączenie wentylatora
digitalWrite(relay_pin4, HIGH); // Wyłączenie wentylatora
digitalWrite(led_info_promiennik, LOW); // Wyłączenie diody od promiennika podczerwieni
digitalWrite(led_info_generator, LOW); // Wyłączenie diody od generatora pary
digitalWrite(led_info_nic, HIGH); // Włączenie diody od Strefy Nieczułosci(Strefy Histerezy)
}
}