#define drun_v 23
#define drun_s 26
#define water_s 35
#define water_v 22
#define water_tmps 21
#define pump_tube 19
#define oxgen 18
#define off 15
#define ADC_VREF_mV 5000.0 // in millivolt
#define ADC_RESOLUTION 4096.0
#define PIN_LM35 34
#define LM35_tubefan 32
#define LM35_tube 33
float tempC, tempC1, tempC2;
int off_system = 0, r1 = 0, w1 = 0, start = 1;
void setup() {
Serial.begin(9600); // Inisialisasi komunikasi serial
pinMode(drun_s, INPUT_PULLUP);
pinMode(drun_v, OUTPUT);
pinMode(water_tmps, OUTPUT);
pinMode(water_s, INPUT_PULLUP);
pinMode(water_v, OUTPUT);
pinMode(pump_tube, OUTPUT);
pinMode(oxgen, OUTPUT);
pinMode(off, OUTPUT);
}
void loop() {
if (start == 1) {
if (digitalRead(drun_s) == 0) {
digitalWrite(drun_v, HIGH);
off_system = 0;
// Serial.print("1-no = 1 ");
//------
digitalWrite(pump_tube, LOW);
digitalWrite(water_v, LOW);
digitalWrite(water_tmps, LOW);
delay(100);
//-------------------------------------
}
if (digitalRead(drun_s) == 1) {
digitalWrite(drun_v, LOW);
off_system = 1;
// Serial.println("11-off= 0 = ");
if (digitalRead(water_s) == 0) {
digitalWrite(water_v, HIGH);
digitalWrite(water_tmps, LOW);
}
if (digitalRead(water_s) == 1) {
digitalWrite(water_v, LOW);
//---------------------
delay(500);
tmp1();
delay(500);
oxgens();
delay(500);
tmp_tubefan();
delay(500);
tmp_tube();
Serial.print(" Start: ");
Serial.println(start);
}
}
delay(100);
}
}
void tmp1() {
int adcVal = analogRead(PIN_LM35);
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
tempC = milliVolt / 10;
Serial.print("Temp: ");
Serial.print(tempC);
if (tempC > 34 && tempC <= 39) {
digitalWrite(water_tmps, LOW);
delay(100);
pump_tubes();
} else {
digitalWrite(water_tmps, HIGH);
}
}
void tmp_tubefan() {
int adcVal = analogRead(LM35_tubefan);
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
tempC1 = milliVolt / 10;
Serial.print(" Tmp1: ");
Serial.print(tempC1);
if (tempC1 >= 36) {
start = 0;
off_all_system() ;
digitalWrite(off, HIGH);
} else {
digitalWrite(off, LOW);
start=1;
}
}
void tmp_tube() {
int adcVal = analogRead(LM35_tubefan);
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
tempC2 = milliVolt / 10;
Serial.print(" Tmp2: ");
Serial.print(tempC2);
if (tempC2 >= 36) {
start = 0;
off_all_system() ;
digitalWrite(off, HIGH);
} else {
digitalWrite(off, LOW);
start=1;
}
}
void pump_tubes() {
digitalWrite(pump_tube, HIGH);
}
void oxgens() {
digitalWrite(oxgen, HIGH);
}
void off_all_system() {
digitalWrite(drun_v, LOW);
digitalWrite(oxgen, LOW);
digitalWrite(water_v, LOW);
digitalWrite(pump_tube, LOW);
}