const int PWM_PIN = 25; // Contoh pin PWM, sesuaikan dengan kebutuhan Anda
const int POTENTIOMETER_PIN = 34; // Pin untuk membaca nilai potensiometer (pin analog pada ESP32)
const int Tombol = 14;
int TombolState = 0;
int Keadaan = 0;
void setup() {
Serial.begin(115200); // Memulai komunikasi serial dengan kecepatan 115200 bps
pinMode(POTENTIOMETER_PIN, INPUT); // Tetapkan pin potensiometer sebagai input
pinMode(Tombol, INPUT);
}
void loop() {
//Baca nilai keadaan button
int TombolState = digitalRead(Tombol);
if (TombolState == HIGH){
Keadaan = (Keadaan + 1);
delay(200);
}
if (Keadaan == 0){
ledcSetup(0, 0, 8);
ledcAttachPin(PWM_PIN, 0);
// Contoh: Set nilai tugas awal (duty cycle) ke setengah
ledcWrite(0, 0);
Serial.println("PWM Generator Mati");
delay(50);
}
else if (Keadaan == 1){
// Baca nilai dari potensiometer (0-4095 pada ESP32)
int potValue = analogRead(POTENTIOMETER_PIN);
// Ubah nilai potensiometer menjadi rentang frekuensi yang diinginkan (misalnya, 10 Hz - 100 kHz)
int frequency = map(potValue, 0, 4095, 10, 100000);
// Inisialisasi atau perbarui saluran PWM dengan frekuensi yang dihitung
ledcSetup(0, frequency, 8);
ledcAttachPin(PWM_PIN, 0);
// Contoh: Set nilai tugas awal (duty cycle) ke setengah
ledcWrite(0, 128); // Untuk PWM 8-bit, nilai maksimum adalah 255, jadi 128 adalah setengah dari itu
// Tampilkan frekuensi yang dihasilkan di Serial Monitor
Serial.print("Frekuensi PWM: ");
Serial.print(frequency);
Serial.println(" Hz");
// Tunggu sebentar sebelum membaca ulang potensiometer
delay(50);
}
else if(Keadaan >= 1){
Keadaan = 0;
}
delay(10);
}