const int trigPin = 9; // Pin trigger sensor ultrasonik
const int echoPin = 10; // Pin echo sensor ultrasonik
const int brightnessPin = A0; // Pin sensor pencahayaan
const int buzzerPin = 11; // Pin buzzer
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(brightnessPin, INPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
long duration, distance;
int brightness;
// Mendapatkan nilai jarak
distance = getDistance(trigPin, echoPin);
// Mendapatkan nilai pencahayaan
brightness = analogRead(brightnessPin);
// Proses fuzzy logic
int fuzzyOutput = fuzzyLogic(distance, brightness);
// Mengatur buzzer berdasarkan output fuzzy
controlBuzzer(fuzzyOutput);
// Menampilkan data pada Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.print(" cm, Brightness: ");
Serial.print(brightness);
Serial.print(", Fuzzy Output: ");
Serial.println(fuzzyOutput);
delay(500);
}
long getDistance(int trigPin, int echoPin) {
// Fungsi untuk mendapatkan nilai jarak menggunakan sensor ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
return pulseIn(echoPin, HIGH) / 58.2; // Konversi waktu ke jarak (cm)
}
int fuzzyLogic(long distance, int brightness) {
// Fungsi fuzzy logic sesuai dengan aturan yang telah ditentukan
// Implementasi sesuai dengan aturan fuzzy yang diberikan
// ...
// Contoh implementasi sederhana
if (distance <= 20 && brightness < 500) {
return 1; // Jarak sangat dekat dan pencahayaan rendah
} else if (distance > 20 && distance <= 50 && brightness >= 500) {
return 2; // Jarak dekat dan pencahayaan cukup
} else {
return 3; // Jarak cukup aman atau pencahayaan tinggi
}
}
void controlBuzzer(int fuzzyOutput) {
// Fungsi untuk mengatur buzzer berdasarkan output fuzzy
// Implementasi sesuai dengan aturan fuzzy yang diberikan
// ...
// Contoh implementasi sederhana
switch (fuzzyOutput) {
case 1:
tone(buzzerPin, 1000);
break;
case 2:
tone(buzzerPin, 700);
break;
case 3:
noTone(buzzerPin);
break;
}
}