Untitled
user_3902222
plain_text
3 years ago
4.2 kB
5
Indexable
// DHT
#include <DHT.h>
#define DHTPIN 26 // DHT11 terhubung pada pin data IO26
#define DHTTYPE DHT11
DHT dht11(DHTPIN, DHTTYPE);
float humidity;
float temperature;
// Mosfet
#define mosfet 17//mosfet ke pompa
// Soil
#define SensorPin 36 //sensor kelembapan tanah terhubung IO36
int tanah = 0;
//Ph
const int ph = 35;
int phValue = 0; //ADC value from sensor
float phoutputValue = 0.0;
//Lampu
int lamp = 16;
unsigned long waktuterakhir1 = 0;
#include <Fuzzy.h>
Fuzzy *fuzzy = new Fuzzy();
//Fuzzyset Input Suhu
FuzzySet *dingin = new FuzzySet(1, 1, 20, 25);
FuzzySet *normal_suhu = new FuzzySet(20, 25, 25, 30);
FuzzySet *panas = new FuzzySet(25, 30, 60, 60);
//Fuzzyset Input Kelembapan udara
FuzzySet *basahudara = new FuzzySet(1, 1, 60, 70);
FuzzySet *normaludara = new FuzzySet(60, 70, 70, 80);
FuzzySet *keringudara = new FuzzySet(70, 80, 100, 100);
//Fuzzyset Input kelembapan tanah
FuzzySet *basahtanah = new FuzzySet(1, 1, 60, 70);
FuzzySet *normaltanah = new FuzzySet(60, 70, 70, 80);
FuzzySet *keringtanah = new FuzzySet(70, 80, 100, 100);
//Fuzzyset Output Lampu output berupa waktu hidup lampu
FuzzySet *st = new FuzzySet(1, 1, 3, 4);
FuzzySet *t = new FuzzySet(3, 4, 4, 5);
FuzzySet *n_lampu = new FuzzySet(4, 5, 5, 6);
FuzzySet *r = new FuzzySet(5, 6, 6, 7);
FuzzySet *sr = new FuzzySet(6, 7, 10, 10);
//Fuzzyset Output Pompa output berupa waktu hidup pompa
FuzzySet *sc = new FuzzySet(1, 1, 3, 4);
FuzzySet *c = new FuzzySet(3, 4, 4, 5);
FuzzySet *n_pompa = new FuzzySet(4, 5, 5, 6);
FuzzySet *l = new FuzzySet(5, 6, 6, 7);
FuzzySet *sl = new FuzzySet(6, 7, 10, 10);
//Panggil Tab Lain
#include "3_fuzzyrule.h"
#include "2_fuzzyset.h"
void setup(){
Serial.begin(115200);
dht11.begin();
pinMode(mosfet, OUTPUT);
pinMode(lamp, OUTPUT);
pinMode(ph, OUTPUT);
fuzzyset();
fuzzyrule();
}
void loop(){
temperature = dht11.readTemperature();
humidity = dht11.readHumidity();
tanah = analogRead(SensorPin);
int outputtanah = map(tanah, 4095,0,0,100);
phValue = analogRead(ph);
float outputph = map(phValue,0,4096,0,1024);
phoutputValue= (-0.0100*outputph)+8.9001;
Serial.print("sensor Ph ADC= ");
Serial.println(outputph);
Serial.print("output Ph= ");
Serial.println(phoutputValue);
Serial.print("Temperature ");
Serial.print(temperature); Serial.println(" *C");
Serial.print("Humidity ");
Serial.print(humidity); Serial.println(" *%");
Serial.print("Soil ");
Serial.print(outputtanah); Serial.println(" *%");
Serial.println("");
Serial.print(temperature); Serial.print(" ");
Serial.print(humidity); Serial.print(" ");
Serial.print(outputtanah); Serial.println(" ");
fuzzy->setInput(1, temperature);
fuzzy->setInput(2, humidity);
fuzzy->setInput(3, outputtanah);
fuzzy->fuzzify();
int pompa = fuzzy->defuzzify(1);
int lampu = fuzzy->defuzzify(2);
Serial.println("Result: ");
Serial.print(" Pompa: ");
Serial.println(pompa);
Serial.print(" Lampu: ");
Serial.println(lampu);
Serial.println("");
Serial.println("");
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long waktupump = pompa * 1000;
if (waktupump > 0){
//Maka Nyalakan Pompa Selama waktupump
if (millis()- waktuterakhir1 > waktupump){
waktuterakhir1 = millis();
kondisipump =! kondisipump;
digitalWrite(mosfet, kondisipump);
}
}
//Jika Waktu Pump Sama Dengan 0
else if (waktupump == 0){
digitalWrite(mosfet, LOW);
}
unsigned long waktulampu = lampu * 1000;
if (waktulampu > 0){
//Maka Nyalakan lampu Selama waktulampu
if (millis()- waktuterakhir1 > waktulampu){
waktuterakhir1 = millis();
kondisilampu =! kondisipump;
digitalWrite(lamp, kondisilampu);
}
}
//Jika Waktu lampu Sama Dengan 0
else if (waktulampu == 0){
digitalWrite(lamp, LOW);
}
delay(1000);
}Editor is loading...