Czy takie uporządkowanie może być? :) nie pisałem jeszcze według Twojej rady po angielsku ponieważ po polsku łatwiej jest dojść "co do czego" oraz wspomniałeś o funkcji loop więc "wyrzuciłem" z niej kod od potencjometru i wstawiłem w osobną funkcje :D
// biblioteki
#include "DHT.h" // Biblioteka czujnika DHT 22
#include "U8glib.h" // Bibioteka OLED I2C
// stałe
#define led_info_promiennik 4 // dioda od promiennika
#define led_info_generator 13 // dioda od generatora pary
#define led_info_nic 1 // dioda od stefy nieczulosci
#define DHTPIN 2 // Definicja PINu sygnałowego
#define DHTTYPE DHT22 // Wybór typu czujnika : DHT 22
// zmienne
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 nr 1
int relay_pin2 = 12; // przekaznik nr 2
int relay_pin3 = 7; // przekaznik nr 3
int relay_pin4 = 9; // przekaznik nr 3
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
// Pozostałe
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C(TWI)
DHT dht(DHTPIN, DHTTYPE, 6); // Definicja czujnika
char str[10]; // znak stopni celsujsza i procent
// Funkcje
void zmniejszanie(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 zwiekszanie(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 strefa_nieczulosci(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 srednia_pot(void)
{
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;
}
void setup()
{
dht.begin(); // inicjalizacja DHT
// ustawienie wejsc/wyjsc
pinMode(potencjometr, INPUT); //pin A0 (pot) jako wejście
pinMode(relay_pin, OUTPUT);
pinMode(relay_pin2, OUTPUT);
pinMode(relay_pin3, OUTPUT);
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 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
srednia_pot();
// PETLA OD WARUNKOW
if(wartosc>(WILG+2))
{
u8g.firstPage();
do {
zwiekszanie();
} 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 {
zmniejszanie();
} 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 {
strefa_nieczulosci();
} 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)
}
}