Untitled
user_3902222
plain_text
2 years ago
4.2 kB
2
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...