#include <DHT.h>
#define NASOS_PIN 6
#define PH_PIN A0
#define NTC_PIN A1
#define POROG_PIN A2
#define DHT_PIN 2
const float BETA = 3950;
const byte RGBpins[3] = {3, 9, 5};
const float GAMMA = 0.7;
const float RL10 = 50;
DHT dht(2, DHT22);
float ntc_tmp() {
int analogValue = analogRead(NTC_PIN);
return 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
}
float lux() {
int analogValue = analogRead(PH_PIN);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
return pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
}
void set_color(byte r, byte g, byte b) {
digitalWrite(RGBpins[0], r);
digitalWrite(RGBpins[1], g);
digitalWrite(RGBpins[2], b);
}
void print_data(float temp, float h, float lux) {
Serial.print("Temp: " + String(temp) + " C | ");
Serial.print("Humi: " + String(h) + " % | ");
Serial.println("Lux: " + String(lux));
}
void setup() {
Serial.begin(9600);
dht.begin();
for(byte i {0}; i < 3; i++) {
pinMode(RGBpins[i], OUTPUT);
digitalWrite(RGBpins[i], LOW);
}
pinMode(NASOS_PIN, OUTPUT);
digitalWrite(NASOS_PIN, LOW);
pinMode(PH_PIN, INPUT);
pinMode(DHT_PIN, INPUT);
pinMode(NTC_PIN, INPUT);
pinMode(POROG_PIN, INPUT);
}
void loop() {
float h = dht.readHumidity();
int read_an = analogRead(POROG_PIN);
int porog = map(read_an, 0, 1023, 0, 50);
float temp = ntc_tmp();
if(temp > 30) {
set_color(HIGH, LOW, LOW);
}
else if(temp < 15) {
set_color(LOW, LOW, HIGH);
}
else if(h < porog) {
set_color(HIGH, HIGH, LOW);
}
else if(lux() < 500) {
set_color(HIGH, LOW, HIGH);
}
else {
set_color(LOW, HIGH, LOW);
}
print_data(temp, h, lux());
if(h < porog) {
digitalWrite(NASOS_PIN, HIGH);
delay(2000);
digitalWrite(NASOS_PIN, LOW);
}
}