//definisi
#define DHTPIN 5
#define DHTTYPE DHT11
#define LED_PIN 14
#define BUZZER 15
#define HumidPin A0
#define SuhuPin A1
int humidpot;
int suhupot;
// Set humidity
float highHumid[4] = {0, 0, 500, 1500};
float midHumid[4] = {500, 1500, 2000, 2500};
float lowHumid[4] = {2000, 3000, 4095, 4095};
//set Suhu
float coldTemp[4] = {5, 5, 15, 20};
float warmTemp[4] = {15, 20, 30, 35};
float hotTemp[4] = {28, 35, 60, 60};
// Set Output
float durasiOff[4] = {0, 0, 0, 0};
float durasiShort[4] = {0, 2, 6, 8};
float durasiMedium[4] = {4, 8, 12, 16};
float durasiLong[4] = {12, 14, 20, 20};
void fuzzyHumidity( float humidity, float &high, float &mid, float &low){
//high
if (humidity <= 500) high = 1;
else if (humidity >= 500 && humidity < 1500) high=(1500-humidity)/1000;
else if (humidity >= 1500) high = 0;
//mid
if (humidity <= 500) mid = 0;
else if (humidity > 500 && humidity <= 1500) mid=(humidity-500)/1000;
else if (humidity > 1500 && humidity <= 2000) mid=1;
else if (humidity > 2000 && humidity < 3000) mid = (3000-humidity)/1000;
else if ( humidity >= 3000) mid = 0;
//low
if (humidity <= 2000) low = 0;
else if (humidity >2000 && humidity <= 3000) low =(humidity-2000)/1000;
else if (humidity > 3000 && humidity < 4095) low = 1;
else if (humidity >= 4095) low = 0;
}
void fuzzySuhu(float suhu, float &cold, float &warm, float &hot){
//cold
if (suhu <= 15 ) cold=1;
else if (suhu > 15 && suhu < 20) cold=(20-suhu)/5;
else if (suhu >= 20) cold = 0;
//warm
if ( suhu <= 15) warm=0;
else if (suhu > 15 && suhu <= 20) warm = (suhu-15)/5;
else if (suhu > 20 && suhu <= 30) warm = 1;
else if (suhu > 30 && suhu < 35) warm = (35-suhu)/5;
else if (suhu >= 35) warm = 0;
//hot
if (suhu <= 30) hot = 0;
else if (suhu > 30 && suhu < 35) hot= (suhu -30)/5;
else if (suhu >= 35) hot= 1;
}
void setup(){
Serial.begin(115200); //menentukan baud rate
}
void loop (){
start :
//potensio
humidpot = analogRead(HumidPin);
suhupot = analogRead(SuhuPin) ;
float humidity = humidpot;
//untuk maping ( nilai terendah bit, nilai tertinggi bit, nilai terendah suhu, dan tertinggi suhu)
float suhu = map(suhupot, 0,1023,5,60);
//float suhu = suhupot* 60 /1023;
float high, mid, low;
fuzzyHumidity(humidity, high, mid, low);
float cold, warm, hot;
fuzzySuhu(suhu, cold, warm, hot);
Serial.print("Humidity: "); Serial.println(humidity);
Serial.print("Suhu: "); Serial.println(suhu);
Serial.print("High: " );Serial.print(high);
Serial.print(" | Mid: "); Serial.print(mid);
Serial.print(" | Low: "); Serial.print(low);
Serial.println();
Serial.print("Cold: "); Serial.print(cold);
Serial.print(" | Warm: "); Serial.print(warm);
Serial.print(" | Hot: "); Serial.println(hot);
Serial.println();
goto stop;
stop :
while (true){
delay (1000);
}
}