#include <Servo.h>
Servo myservo;
float lux, HG,HT, z1,z2, z;
unsigned char HimpunanGelap(){
if(lux>=700){HG=0;}
else if(lux>300&&lux<700){HG=(lux-300)/400;}
else if(lux<=300){HG=1;}
return HG;
}
unsigned char HimpunanTerang(){
if(lux>=700){HT=1;}
else if(lux>300&&lux<700){HT=(700-lux)/400;}
else if(lux<=300){HT=0;}
return HT;
}
void fuzzifikasi(){
HimpunanGelap();
HimpunanTerang();
}
unsigned char AP1(){
z1=(HT*180)+0;
}
unsigned char AP2(){
z2=180-(HG*180);
}
void inferensi(){
AP1();
AP2();
}
void setup(){
Serial.begin(9600);
myservo.attach(3);
delay(100);
pinMode(A0, INPUT);
pinMode(5, OUTPUT);
}
void loop(){
lux=analogRead(A0);
fuzzifikasi();
Serial.print("HG: ");
Serial.println(HG);
Serial.print("HT: ");
Serial.println(HT);
inferensi();
Serial.print("z1: ");
Serial.println(z1);
Serial.print("z2: ");
Serial.println(z2);
z=((HT*z1)+(HG*z2))/(HT+HG);
Serial.print("Z: ");
Serial.println(z);
delay(500);
myservo.write(z);
}