//library #include // Instantiating a Fuzzy object Fuzzy*fuzzy = new Fuzzy(); // FuzzyInput_ds18b20 FuzzySet*rendah = new FuzzySet(-20, -15, 15, 20); FuzzySet*normal = new FuzzySet(15, 20, 30, 35); FuzzySet*tinggi = new FuzzySet(30, 35, 50, 100); // FuzzyInput_ph FuzzySet*asam = new FuzzySet(-13, -6.5, 4.5, 6.5); FuzzySet*netral = new FuzzySet(6, 7, 8, 9); FuzzySet*basa = new FuzzySet(8.5, 10.5, 14.5, 18.5); // FuzzyInput_turbidity FuzzySet*sangat_aman = new FuzzySet(-60, -30, 20, 30); FuzzySet*aman = new FuzzySet(20, 30, 40, 50); FuzzySet*bahaya = new FuzzySet(40, 50, 70, 100); // FuzzyOutput_blower FuzzySet*pelan = new FuzzySet(-100, -50, 50, 100); FuzzySet*sedang = new FuzzySet(60, 100, 150, 180); FuzzySet*cepat = new FuzzySet(140, 180, 255, 350); // FuzzyOutput_asam_ph FuzzySet*off_asam = new FuzzySet(-70, -35, 35, 70); FuzzySet*on_asam = new FuzzySet(35, 70, 100, 140); // FuzzyOutput_basa_ph FuzzySet*off_basa = new FuzzySet(-70, -35, 35, 70); FuzzySet*on_basa = new FuzzySet(35, 70, 100, 140); // FuzzyOutput_koagulan FuzzySet*off_koagulan = new FuzzySet(-70, -35, 35, 70); FuzzySet*on_koagulan = new FuzzySet(35, 70, 100, 140); void setup() { Serial.begin(9600); randomSeed(analogRead(0)); //MEMBUAT MEMBERSHIP FUNCTION FUZZY //FuzzyInput_ds18b20/Input(1) FuzzyInput *ds18b20 = new FuzzyInput(1); ds18b20->addFuzzySet(rendah); ds18b20->addFuzzySet(normal); ds18b20->addFuzzySet(tinggi); fuzzy->addFuzzyInput(ds18b20); //FuzzyInput_ph/Input(2) FuzzyInput *ph = new FuzzyInput(2); ph->addFuzzySet(asam); ph->addFuzzySet(netral); ph->addFuzzySet(basa); fuzzy->addFuzzyInput(ph); //FuzzyInput_turbidity/Input(3) FuzzyInput *turbidity = new FuzzyInput(3); turbidity->addFuzzySet(sangat_aman); turbidity->addFuzzySet(aman); turbidity->addFuzzySet(bahaya); fuzzy->addFuzzyInput(turbidity); //FuzzyOutput_blower/Output(1) FuzzyOutput *blower = new FuzzyOutput(1); blower->addFuzzySet(pelan); blower->addFuzzySet(sedang); blower->addFuzzySet(cepat); fuzzy->addFuzzyOutput(blower); //FuzzyOutput_asam_ph/Output(2) FuzzyOutput *asam_ph = new FuzzyOutput(2); asam_ph->addFuzzySet(off_asam); asam_ph->addFuzzySet(on_asam); fuzzy->addFuzzyOutput(asam_ph); //FuzzyOutput_basa_ph/Output(3) FuzzyOutput *basa_ph = new FuzzyOutput(3); basa_ph->addFuzzySet(off_basa); basa_ph->addFuzzySet(on_basa); fuzzy->addFuzzyOutput(basa_ph); //FuzzyOutput_koagulan/Output(4) FuzzyOutput *koagulan = new FuzzyOutput(4); koagulan->addFuzzySet(off_koagulan); koagulan->addFuzzySet(on_koagulan); fuzzy->addFuzzyOutput(koagulan); //MEMBUAT RULES FUNCTION FUZZY //*******************************2 input************************************ FuzzyRuleAntecedent* ifds18b20rendahAndphasam = new FuzzyRuleAntecedent(); ifds18b20rendahAndphasam->joinWithAND(rendah, asam); FuzzyRuleAntecedent* ifds18b20rendahAndphnetral = new FuzzyRuleAntecedent(); ifds18b20rendahAndphnetral->joinWithAND(rendah, netral); FuzzyRuleAntecedent* ifds18b20rendahAndphbasa = new FuzzyRuleAntecedent(); ifds18b20rendahAndphbasa->joinWithAND(rendah, basa); FuzzyRuleAntecedent* ifds18b20normalAndphasam = new FuzzyRuleAntecedent(); ifds18b20normalAndphasam->joinWithAND(normal, asam); FuzzyRuleAntecedent* ifds18b20normalAndphnetral = new FuzzyRuleAntecedent(); ifds18b20normalAndphnetral->joinWithAND(normal, netral); FuzzyRuleAntecedent* ifds18b20normalAndphbasa = new FuzzyRuleAntecedent(); ifds18b20normalAndphbasa->joinWithAND(normal, basa); FuzzyRuleAntecedent* ifds18b20tinggiAndphasam = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphasam->joinWithAND(tinggi, asam); FuzzyRuleAntecedent* ifds18b20tinggiAndphnetral = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphnetral->joinWithAND(tinggi, netral); FuzzyRuleAntecedent* ifds18b20tinggiAndphbasa = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphbasa->joinWithAND(tinggi, basa); //*******************************1 input************************************ FuzzyRuleAntecedent* ifturbiditysangat_aman = new FuzzyRuleAntecedent(); ifturbiditysangat_aman->joinSingle(sangat_aman); FuzzyRuleAntecedent* ifturbidityaman = new FuzzyRuleAntecedent(); ifturbidityaman->joinSingle(aman); FuzzyRuleAntecedent* ifturbiditybahaya = new FuzzyRuleAntecedent(); ifturbiditybahaya->joinSingle(bahaya); //*******************************gabung 2+1input dan 4ouput************************************ //input 1 FuzzyRuleAntecedent* ifds18b20rendahAndphasamAndturbiditysangat_aman = new FuzzyRuleAntecedent(); ifds18b20rendahAndphasamAndturbiditysangat_aman->joinWithAND(ifds18b20rendahAndphasam, sangat_aman); //output FuzzyRuleConsequent* thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan1 = new FuzzyRuleConsequent(); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan1->addOutput(pelan); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan1->addOutput(off_asam); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan1->addOutput(on_basa); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan1->addOutput(off_koagulan); FuzzyRule *fuzzyRule1 = new FuzzyRule(1, ifds18b20rendahAndphasamAndturbiditysangat_aman, thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan1); fuzzy->addFuzzyRule(fuzzyRule1); //input 2 FuzzyRuleAntecedent* ifds18b20rendahAndphasamAndturbidityaman = new FuzzyRuleAntecedent(); ifds18b20rendahAndphasamAndturbidityaman->joinWithAND(ifds18b20rendahAndphasam, aman); //output FuzzyRuleConsequent* thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan2 = new FuzzyRuleConsequent(); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan2->addOutput(pelan); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan2->addOutput(off_asam); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan2->addOutput(on_basa); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan2->addOutput(off_koagulan); FuzzyRule *fuzzyRule2 = new FuzzyRule(2, ifds18b20rendahAndphasamAndturbidityaman, thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan2); fuzzy->addFuzzyRule(fuzzyRule2); //input 3 FuzzyRuleAntecedent* ifds18b20rendahAndphasamAndturbiditybahaya = new FuzzyRuleAntecedent(); ifds18b20rendahAndphasamAndturbiditybahaya->joinWithAND(ifds18b20rendahAndphasam, bahaya); //output FuzzyRuleConsequent* thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan3 = new FuzzyRuleConsequent(); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan3->addOutput(pelan); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan3->addOutput(off_asam); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan3->addOutput(on_basa); thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan3->addOutput(on_koagulan); FuzzyRule *fuzzyRule3 = new FuzzyRule(3, ifds18b20rendahAndphasamAndturbiditybahaya, thenblowerpelanAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan3); fuzzy->addFuzzyRule(fuzzyRule3); //input 4 FuzzyRuleAntecedent* ifds18b20rendahAndphnetralAndturbiditysangat_aman = new FuzzyRuleAntecedent(); ifds18b20rendahAndphnetralAndturbiditysangat_aman->joinWithAND(ifds18b20rendahAndphnetral, sangat_aman); //output FuzzyRuleConsequent* thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan4 = new FuzzyRuleConsequent(); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan4->addOutput(pelan); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan4->addOutput(off_asam); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan4->addOutput(off_basa); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan4->addOutput(off_koagulan); FuzzyRule *fuzzyRule4 = new FuzzyRule(4, ifds18b20rendahAndphnetralAndturbiditysangat_aman, thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan4); fuzzy->addFuzzyRule(fuzzyRule4); //input 5 FuzzyRuleAntecedent* ifds18b20rendahAndphnetralAndturbidityaman = new FuzzyRuleAntecedent(); ifds18b20rendahAndphnetralAndturbidityaman->joinWithAND(ifds18b20rendahAndphnetral, aman); //output FuzzyRuleConsequent* thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan5 = new FuzzyRuleConsequent(); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan5->addOutput(pelan); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan5->addOutput(off_asam); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan5->addOutput(off_basa); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan5->addOutput(off_koagulan); FuzzyRule *fuzzyRule5 = new FuzzyRule(5, ifds18b20rendahAndphnetralAndturbiditysangat_aman, thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan5); fuzzy->addFuzzyRule(fuzzyRule5); //input 6 FuzzyRuleAntecedent* ifds18b20rendahAndphnetralAndturbiditybahaya = new FuzzyRuleAntecedent(); ifds18b20rendahAndphnetralAndturbiditybahaya->joinWithAND(ifds18b20rendahAndphnetral, bahaya); //output FuzzyRuleConsequent* thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan6 = new FuzzyRuleConsequent(); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan6->addOutput(pelan); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan6->addOutput(off_asam); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan6->addOutput(off_basa); thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan6->addOutput(on_koagulan); FuzzyRule *fuzzyRule6 = new FuzzyRule(6, ifds18b20rendahAndphnetralAndturbiditybahaya, thenblowerpelanAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan6); fuzzy->addFuzzyRule(fuzzyRule6); //input 7 FuzzyRuleAntecedent* ifds18b20rendahAndphbasaAndturbiditysangat_aman = new FuzzyRuleAntecedent(); ifds18b20rendahAndphbasaAndturbiditysangat_aman->joinWithAND(ifds18b20rendahAndphbasa, sangat_aman); //output FuzzyRuleConsequent* thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan7 = new FuzzyRuleConsequent(); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan7->addOutput(pelan); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan7->addOutput(on_asam); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan7->addOutput(off_basa); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan7->addOutput(off_koagulan); FuzzyRule *fuzzyRule7 = new FuzzyRule(7, ifds18b20rendahAndphbasaAndturbiditysangat_aman, thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan7); fuzzy->addFuzzyRule(fuzzyRule7); //input 8 FuzzyRuleAntecedent* ifds18b20rendahAndphbasaAndturbidityaman = new FuzzyRuleAntecedent(); ifds18b20rendahAndphbasaAndturbidityaman->joinWithAND(ifds18b20rendahAndphbasa, aman); //output FuzzyRuleConsequent* thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan8 = new FuzzyRuleConsequent(); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan8->addOutput(pelan); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan8->addOutput(on_asam); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan8->addOutput(off_basa); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan8->addOutput(off_koagulan); FuzzyRule *fuzzyRule8 = new FuzzyRule(8, ifds18b20rendahAndphbasaAndturbidityaman, thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan8); fuzzy->addFuzzyRule(fuzzyRule8); //input 9 FuzzyRuleAntecedent* ifds18b20rendahAndphbasaAndturbiditybahaya = new FuzzyRuleAntecedent(); ifds18b20rendahAndphbasaAndturbiditybahaya->joinWithAND(ifds18b20rendahAndphbasa, bahaya); //output FuzzyRuleConsequent* thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan9 = new FuzzyRuleConsequent(); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan9->addOutput(pelan); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan9->addOutput(on_asam); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan9->addOutput(off_basa); thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan9->addOutput(on_koagulan); FuzzyRule *fuzzyRule9 = new FuzzyRule(9, ifds18b20rendahAndphbasaAndturbiditybahaya, thenblowerpelanAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan9); fuzzy->addFuzzyRule(fuzzyRule9); //input 10 FuzzyRuleAntecedent* ifds18b20normalAndphasamAndturbiditysangat_aman = new FuzzyRuleAntecedent(); ifds18b20normalAndphasamAndturbiditysangat_aman->joinWithAND(ifds18b20normalAndphasam, sangat_aman); //output FuzzyRuleConsequent* thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan10 = new FuzzyRuleConsequent(); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan10->addOutput(sedang); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan10->addOutput(off_asam); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan10->addOutput(on_basa); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan10->addOutput(off_koagulan); FuzzyRule *fuzzyRule10 = new FuzzyRule(10, ifds18b20normalAndphasamAndturbiditysangat_aman, thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan10); fuzzy->addFuzzyRule(fuzzyRule10); //input 11 FuzzyRuleAntecedent* ifds18b20normalAndphasamAndturbidityaman = new FuzzyRuleAntecedent(); ifds18b20normalAndphasamAndturbidityaman->joinWithAND(ifds18b20normalAndphasam, aman); //output FuzzyRuleConsequent* thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan11 = new FuzzyRuleConsequent(); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan11->addOutput(sedang); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan11->addOutput(off_asam); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan11->addOutput(on_basa); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan11->addOutput(off_koagulan); FuzzyRule *fuzzyRule11 = new FuzzyRule(11, ifds18b20normalAndphasamAndturbidityaman, thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan11); fuzzy->addFuzzyRule(fuzzyRule11); //input 12 FuzzyRuleAntecedent* ifds18b20normalAndphasamAndturbiditybahaya = new FuzzyRuleAntecedent(); ifds18b20normalAndphasamAndturbiditybahaya->joinWithAND(ifds18b20normalAndphasam, bahaya); //output FuzzyRuleConsequent* thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan12 = new FuzzyRuleConsequent(); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan12->addOutput(sedang); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan12->addOutput(off_asam); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan12->addOutput(on_basa); thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan12->addOutput(on_koagulan); FuzzyRule *fuzzyRule12 = new FuzzyRule(12, ifds18b20normalAndphasamAndturbiditybahaya, thenblowersedangAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan12); fuzzy->addFuzzyRule(fuzzyRule12); //input 13 FuzzyRuleAntecedent* ifds18b20normalAndphnetralAndturbiditysangat_aman = new FuzzyRuleAntecedent(); ifds18b20normalAndphnetralAndturbiditysangat_aman->joinWithAND(ifds18b20normalAndphnetral, sangat_aman); //output FuzzyRuleConsequent* thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan13 = new FuzzyRuleConsequent(); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan13->addOutput(sedang); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan13->addOutput(off_asam); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan13->addOutput(off_basa); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan13->addOutput(off_koagulan); FuzzyRule *fuzzyRule13 = new FuzzyRule(13, ifds18b20normalAndphnetralAndturbiditysangat_aman, thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan13); fuzzy->addFuzzyRule(fuzzyRule13); //input 14 FuzzyRuleAntecedent* ifds18b20normalAndphnetralAndturbidityaman = new FuzzyRuleAntecedent(); ifds18b20normalAndphnetralAndturbidityaman ->joinWithAND(ifds18b20normalAndphnetral, aman); //output FuzzyRuleConsequent* thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan14 = new FuzzyRuleConsequent(); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan14->addOutput(sedang); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan14->addOutput(off_asam); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan14->addOutput(off_basa); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan14->addOutput(off_koagulan); FuzzyRule *fuzzyRule14 = new FuzzyRule(14, ifds18b20normalAndphnetralAndturbidityaman, thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan14); fuzzy->addFuzzyRule(fuzzyRule14); //input 15 FuzzyRuleAntecedent* ifds18b20normalAndphnetralAndturbiditybahaya = new FuzzyRuleAntecedent(); ifds18b20normalAndphnetralAndturbiditybahaya->joinWithAND(ifds18b20normalAndphnetral, bahaya); //output FuzzyRuleConsequent* thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan15 = new FuzzyRuleConsequent(); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan15->addOutput(sedang); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan15->addOutput(off_asam); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan15->addOutput(off_basa); thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan15->addOutput(on_koagulan); FuzzyRule *fuzzyRule15 = new FuzzyRule(15, ifds18b20normalAndphnetralAndturbiditybahaya, thenblowersedangAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan15); fuzzy->addFuzzyRule(fuzzyRule15); //input 16 FuzzyRuleAntecedent* ifds18b20normalAndphbasaAndturbiditysangat_aman = new FuzzyRuleAntecedent(); ifds18b20normalAndphbasaAndturbiditysangat_aman->joinWithAND(ifds18b20normalAndphbasa, sangat_aman); //output FuzzyRuleConsequent* thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan16 = new FuzzyRuleConsequent(); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan16->addOutput(sedang); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan16->addOutput(on_asam); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan16->addOutput(off_basa); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan16->addOutput(off_koagulan); FuzzyRule *fuzzyRule16 = new FuzzyRule(16, ifds18b20normalAndphbasaAndturbiditysangat_aman, thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan16); fuzzy->addFuzzyRule(fuzzyRule16); //input 17 FuzzyRuleAntecedent* ifds18b20normalAndphbasaAndturbidityaman = new FuzzyRuleAntecedent(); ifds18b20normalAndphbasaAndturbidityaman->joinWithAND(ifds18b20normalAndphbasa, aman); //output FuzzyRuleConsequent* thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan17 = new FuzzyRuleConsequent(); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan17->addOutput(sedang); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan17->addOutput(on_asam); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan17->addOutput(off_basa); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan17->addOutput(off_koagulan); FuzzyRule *fuzzyRule17 = new FuzzyRule(17, ifds18b20normalAndphbasaAndturbidityaman, thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan17); fuzzy->addFuzzyRule(fuzzyRule17); //input 18 FuzzyRuleAntecedent* ifds18b20normalAndphbasaAndturbiditybahaya = new FuzzyRuleAntecedent(); ifds18b20normalAndphbasaAndturbiditybahaya->joinWithAND(ifds18b20normalAndphbasa, bahaya); //output FuzzyRuleConsequent* thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan18 = new FuzzyRuleConsequent(); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan18->addOutput(sedang); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan18->addOutput(on_asam); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan18->addOutput(off_basa); thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan18->addOutput(on_koagulan); FuzzyRule *fuzzyRule18 = new FuzzyRule(18, ifds18b20normalAndphbasaAndturbiditybahaya, thenblowersedangAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan18); fuzzy->addFuzzyRule(fuzzyRule18); //input 19 FuzzyRuleAntecedent* ifds18b20tinggiAndphasamAndturbiditysangat_aman = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphasamAndturbiditysangat_aman->joinWithAND(ifds18b20tinggiAndphasam, sangat_aman); //output FuzzyRuleConsequent* thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan19 = new FuzzyRuleConsequent(); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan19->addOutput(cepat); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan19->addOutput(off_asam); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan19->addOutput(on_basa); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan19->addOutput(off_koagulan); FuzzyRule *fuzzyRule19 = new FuzzyRule(19, ifds18b20tinggiAndphasamAndturbiditysangat_aman, thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan19); fuzzy->addFuzzyRule(fuzzyRule19); //input 20 FuzzyRuleAntecedent* ifds18b20tinggiAndphasamAndturbidityaman = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphasamAndturbidityaman->joinWithAND(ifds18b20tinggiAndphasam, aman); //output FuzzyRuleConsequent* thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan20 = new FuzzyRuleConsequent(); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan20->addOutput(cepat); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan20->addOutput(off_asam); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan20->addOutput(on_basa); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan20->addOutput(off_koagulan); FuzzyRule *fuzzyRule20 = new FuzzyRule(20, ifds18b20tinggiAndphasamAndturbidityaman, thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanoff_koagulan20); fuzzy->addFuzzyRule(fuzzyRule20); //input 21 FuzzyRuleAntecedent* ifds18b20tinggiAndphasamAndturbiditybahaya = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphasamAndturbiditybahaya->joinWithAND(ifds18b20tinggiAndphasam, bahaya); //output FuzzyRuleConsequent* thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan21 = new FuzzyRuleConsequent(); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan21->addOutput(cepat); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan21->addOutput(off_asam); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan21->addOutput(on_basa); thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan21->addOutput(on_koagulan); FuzzyRule *fuzzyRule21 = new FuzzyRule(21, ifds18b20tinggiAndphasamAndturbiditybahaya, thenblowercepatAndasam_phoff_asamAndbasa_phon_basaAndkoagulanon_koagulan21); fuzzy->addFuzzyRule(fuzzyRule21); //input 22 FuzzyRuleAntecedent* ifds18b20tinggiAndphnetralAndturbiditysangat_aman = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphnetralAndturbiditysangat_aman->joinWithAND(ifds18b20tinggiAndphnetral, sangat_aman); //output FuzzyRuleConsequent* thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan22 = new FuzzyRuleConsequent(); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan22->addOutput(cepat); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan22->addOutput(off_asam); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan22->addOutput(off_basa); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan22->addOutput(off_koagulan); FuzzyRule *fuzzyRule22 = new FuzzyRule(22, ifds18b20tinggiAndphnetralAndturbiditysangat_aman, thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan22); fuzzy->addFuzzyRule(fuzzyRule22); //input 23 FuzzyRuleAntecedent* ifds18b20tinggiAndphnetralAndturbidityaman = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphnetralAndturbidityaman->joinWithAND(ifds18b20tinggiAndphbasa, aman); //output FuzzyRuleConsequent* thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan23 = new FuzzyRuleConsequent(); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan23->addOutput(cepat); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan23->addOutput(off_asam); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan23->addOutput(off_basa); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan23->addOutput(off_koagulan); FuzzyRule *fuzzyRule23 = new FuzzyRule(23, ifds18b20tinggiAndphnetralAndturbidityaman, thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanoff_koagulan23); fuzzy->addFuzzyRule(fuzzyRule23); //input 24 FuzzyRuleAntecedent* ifds18b20tinggiAndphnetralAndturbiditybahaya = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphnetralAndturbiditybahaya->joinWithAND(ifds18b20tinggiAndphbasa, bahaya); //output FuzzyRuleConsequent* thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan24 = new FuzzyRuleConsequent(); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan24->addOutput(cepat); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan24->addOutput(off_asam); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan24->addOutput(off_basa); thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan24->addOutput(on_koagulan); FuzzyRule *fuzzyRule24 = new FuzzyRule(24, ifds18b20tinggiAndphnetralAndturbiditybahaya, thenblowercepatAndasam_phoff_asamAndbasa_phoff_basaAndkoagulanon_koagulan24); fuzzy->addFuzzyRule(fuzzyRule24); //input 25 FuzzyRuleAntecedent* ifds18b20tinggiAndphbasaAndturbiditysangat_aman = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphbasaAndturbiditysangat_aman->joinWithAND(ifds18b20tinggiAndphbasa, sangat_aman); //output FuzzyRuleConsequent* thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan25 = new FuzzyRuleConsequent(); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan25->addOutput(cepat); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan25->addOutput(on_asam); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan25->addOutput(off_basa); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan25->addOutput(off_koagulan); FuzzyRule *fuzzyRule25 = new FuzzyRule(25, ifds18b20tinggiAndphbasaAndturbiditysangat_aman , thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan25); fuzzy->addFuzzyRule(fuzzyRule25); //input 26 FuzzyRuleAntecedent* ifds18b20tinggiAndphbasaAndturbidityaman = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphbasaAndturbidityaman->joinWithAND(ifds18b20tinggiAndphbasa, aman); //output FuzzyRuleConsequent* thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan26 = new FuzzyRuleConsequent(); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan26->addOutput(cepat); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan26->addOutput(on_asam); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan26->addOutput(off_basa); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan26->addOutput(off_koagulan); FuzzyRule *fuzzyRule26 = new FuzzyRule(26, ifds18b20tinggiAndphbasaAndturbidityaman, thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanoff_koagulan26); fuzzy->addFuzzyRule(fuzzyRule26); //input 27 FuzzyRuleAntecedent* ifds18b20tinggiAndphbasaAndturbiditybahaya = new FuzzyRuleAntecedent(); ifds18b20tinggiAndphbasaAndturbiditybahaya->joinWithAND(ifds18b20tinggiAndphbasa, bahaya); //output FuzzyRuleConsequent* thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan27 = new FuzzyRuleConsequent(); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan27->addOutput(cepat); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan27->addOutput(on_asam); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan27->addOutput(off_basa); thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan27->addOutput(on_koagulan); FuzzyRule *fuzzyRule27 = new FuzzyRule(27, ifds18b20tinggiAndphbasaAndturbiditybahaya, thenblowercepatAndasam_phon_asamAndbasa_phoff_basaAndkoagulanon_koagulan27); fuzzy->addFuzzyRule(fuzzyRule27); } void loop() { int value_temperature = random (19); int value_ph = random (7); int value_NTU = random (30); Serial.println("\n\n\nEntrance: "); Serial.print("\t\t\tSuhu: "); Serial.print(value_temperature); Serial.print(", pH: "); Serial.print(value_ph); Serial.print(", and Kekeruhan: "); Serial.println(value_NTU); fuzzy->setInput(1, value_temperature); fuzzy->setInput(2, value_ph); fuzzy->setInput(3, value_NTU); fuzzy->fuzzify(); bool fuzzyRule1 = fuzzy->isFiredRule(1); bool fuzzyRule2 = fuzzy->isFiredRule(2); bool fuzzyRule3 = fuzzy->isFiredRule(3); bool fuzzyRule4 = fuzzy->isFiredRule(4); bool fuzzyRule5 = fuzzy->isFiredRule(5); bool fuzzyRule6 = fuzzy->isFiredRule(6); bool fuzzyRule7 = fuzzy->isFiredRule(7); bool fuzzyRule8 = fuzzy->isFiredRule(8); bool fuzzyRule9 = fuzzy->isFiredRule(9); bool fuzzyRule10 = fuzzy->isFiredRule(10); bool fuzzyRule11 = fuzzy->isFiredRule(11); bool fuzzyRule12 = fuzzy->isFiredRule(12); bool fuzzyRule13 = fuzzy->isFiredRule(13); bool fuzzyRule14 = fuzzy->isFiredRule(14); bool fuzzyRule15 = fuzzy->isFiredRule(15); bool fuzzyRule16 = fuzzy->isFiredRule(16); bool fuzzyRule17 = fuzzy->isFiredRule(17); bool fuzzyRule18 = fuzzy->isFiredRule(18); bool fuzzyRule19 = fuzzy->isFiredRule(19); bool fuzzyRule20 = fuzzy->isFiredRule(20); bool fuzzyRule21 = fuzzy->isFiredRule(21); bool fuzzyRule22 = fuzzy->isFiredRule(22); bool fuzzyRule23 = fuzzy->isFiredRule(23); bool fuzzyRule24 = fuzzy->isFiredRule(24); bool fuzzyRule25 = fuzzy->isFiredRule(25); bool fuzzyRule26 = fuzzy->isFiredRule(26); bool fuzzyRule27 = fuzzy->isFiredRule(27); Serial.println("Input: "); Serial.print("\tSuhu: rendah-> "); Serial.print(rendah->getPertinence()); Serial.print(", normal-> "); Serial.print(normal->getPertinence()); Serial.print(", tinggi-> "); Serial.println(tinggi->getPertinence()); Serial.print("\tpH: asam-> "); Serial.print(asam->getPertinence()); Serial.print(", netral-> "); Serial.print(netral->getPertinence()); Serial.print(", basa-> "); Serial.println(basa->getPertinence()); Serial.print("\tKekeruhan: sangat_aman-> "); Serial.print(sangat_aman->getPertinence()); Serial.print(", aman-> "); Serial.print(aman->getPertinence()); Serial.print(", bahaya-> "); Serial.println(bahaya->getPertinence()); float output1 = fuzzy->defuzzify(1); float output2 = fuzzy->defuzzify(2); float output3 = fuzzy->defuzzify(3); float output4 = fuzzy->defuzzify(4); Serial.println("Output: "); Serial.print("\tblower: pelan-> "); Serial.print(pelan->getPertinence()); Serial.print(", sedang-> "); Serial.print(sedang->getPertinence()); Serial.print(", cepat-> "); Serial.println(cepat->getPertinence()); Serial.print("\tasam_ph: off_asam-> "); Serial.print(off_asam->getPertinence()); Serial.print(", on_asam-> "); Serial.println(on_asam->getPertinence()); Serial.print("\tbasa_ph: off_basa-> "); Serial.print(off_basa->getPertinence()); Serial.print(", on_basa-> "); Serial.println(on_basa->getPertinence()); Serial.print("\tkoagulan: off_koagulan-> "); Serial.print(off_koagulan->getPertinence()); Serial.print(", on_koagulan-> "); Serial.println(on_koagulan->getPertinence()); Serial.println("Result: "); Serial.print("\t\t\tblower: "); Serial.print(output1); Serial.print(", and asam_ph: "); Serial.print(output2); Serial.print(", and basa_ph: "); Serial.print(output2); Serial.print(", and koagulan: "); Serial.println(output4); delay(5000); }