Witam. Czy byłby mi ktoś w stanie pomóc w jaki sposób rozrysować na schemacie blokowym te warunki z tego kodu? :)
Kod:
#include "DHT.h"
#include "U8glib.h"
#define LED_INFO_PROMIENNIK 4
#define LED_INFO_GENERATOR 13
#define LED_INFO_STREFA_NIECZULOSCI 1
#define DHTPIN 2
#define DHTTYPE DHT22
int wilgotnosc;
float temperatura;
unsigned long aktualnyCzas = 0;
unsigned long zapamietanyCzas = 0;
int przekaznikPin = 8;
int przekaznikPin2 = 12;
int przekaznikPin3 = 7;
int przekaznikPin4 = 9;
int potencjometr = A0;
int wartosc = 0;
int dane[5];
int i = 0;
int srednia;
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0); // I2C(TWI)
DHT dht(DHTPIN, DHTTYPE, 6);
char str[10];
void setup()
{
dht.begin();
pinMode(potencjometr, INPUT);
pinMode(przekaznikPin, OUTPUT);
pinMode(przekaznikPin2, OUTPUT);
pinMode(przekaznikPin3, OUTPUT);
pinMode(przekaznikPin4, OUTPUT);
digitalWrite(przekaznikPin, HIGH);
digitalWrite(przekaznikPin2, HIGH);
digitalWrite(przekaznikPin3, HIGH);
digitalWrite(przekaznikPin4, HIGH);
pinMode(LED_INFO_PROMIENNIK, OUTPUT);
pinMode(LED_INFO_GENERATOR, OUTPUT);
pinMode(LED_INFO_STREFA_NIECZULOSCI, OUTPUT);
}
void zmniejszanieWilgotnosci(void)
{
u8g.firstPage();
do {
u8g.setFont(u8g_font_helvB08);
u8g.drawStr(2, 27, "Zmniejszanie wilgotnosci!");
u8g.drawStr(2, 42, "Wilgotnosc :");
u8g.drawStr(80, 42, dtostrf(wilgotnosc, 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());
}
void zwiekszanieWilgotnosci(void)
{
u8g.firstPage();
do {
u8g.setFont(u8g_font_helvB08);
u8g.drawStr(2, 27, "Zwiekszanie wilgotnosci!");
u8g.drawStr(2, 42, "Wilgotnosc :");
u8g.drawStr(80, 42, dtostrf(wilgotnosc, 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());
}
void strefaNieczulosci(void)
{
u8g.firstPage();
do {
u8g.setFont(u8g_font_helvB08);
u8g.drawStr(2, 27, "Strefa Nieczulosci");
u8g.drawStr(2, 42, "Wilgotnosc :");
u8g.drawStr(80, 42, dtostrf(wilgotnosc, 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());
}
static void wlaczPromiennik()
{
digitalWrite(przekaznikPin2, LOW);
digitalWrite(LED_INFO_PROMIENNIK, HIGH);
}
static void wylaczPromiennik()
{
digitalWrite(przekaznikPin2, HIGH);
digitalWrite(LED_INFO_PROMIENNIK, LOW);
}
static void wlaczWentylatory()
{
digitalWrite(przekaznikPin3, LOW);
digitalWrite(przekaznikPin4, LOW);
}
static void wylaczWentylatory()
{
digitalWrite(przekaznikPin3, HIGH);
digitalWrite(przekaznikPin4, HIGH);
}
static void wlaczGeneratorPary()
{
digitalWrite(przekaznikPin, LOW);
digitalWrite(LED_INFO_GENERATOR, HIGH);
}
static void wylaczGeneratorPary()
{
digitalWrite(przekaznikPin, HIGH);
digitalWrite(LED_INFO_GENERATOR, LOW);
}
static void wylaczStrefaNieczulosci()
{
digitalWrite(LED_INFO_STREFA_NIECZULOSCI, LOW);
}
static void wlaczStrefaNieczulosci()
{
digitalWrite(LED_INFO_STREFA_NIECZULOSCI, HIGH);
}
void usrednianieSkalowaniePomiaruPotencjometru()
{
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 warunekZwiekszanieWilgotnosci()
{
wylaczWentylatory();
wlaczPromiennik();
wylaczGeneratorPary();
wylaczStrefaNieczulosci();
}
void warunekZmniejszanieWilgotnosci()
{
wlaczWentylatory();
wylaczPromiennik();
wlaczGeneratorPary();
wylaczStrefaNieczulosci();
}
void warunekStrefaNieczulosci()
{
wylaczGeneratorPary();
wylaczPromiennik();
wylaczWentylatory();
wlaczStrefaNieczulosci();
}
void loop()
{
wilgotnosc = dht.readHumidity();
temperatura = dht.readTemperature();
odmierzanieCzasu();
usrednianieSkalowaniePomiaruPotencjometru();
if (wartosc > (wilgotnosc + 2)) {
u8g.firstPage();
do {
zwiekszanieWilgotnosci();
} while (u8g.nextPage());
warunekZwiekszanieWilgotnosci();
}
else if (wartosc < (wilgotnosc - 2)) {
do {
zmniejszanieWilgotnosci();
} while (u8g.nextPage());
warunekZmniejszanieWilgotnosci();
}
else {
u8g.firstPage();
do {
strefaNieczulosci();
} while (u8g.nextPage());
warunekStrefaNieczulosci();
}
}
Rozpocząłem już rysowanie ale nie wiem jak "ująć" te warunki :)