// PWM Fan Control using ESP32 DevKit-C V4
const int fanPin = 5; // GPIO5 used for PWM output
const int pwmFreq = 25000; // 25kHz PWM frequency (quiet fan)
const int pwmChannel = 0; // Use PWM channel 0
const int pwmResolution = 8; // 8-bit resolution (0-255)
void setup() {
Serial.begin(115200);
// Setup PWM functionality
ledcSetup(pwmChannel, pwmFreq, pwmResolution);
ledcAttachPin(fanPin, pwmChannel);
Serial.println("PWM Fan Control Started");
}
void loop() {
// Gradually increase fan speed
for (int duty = 0; duty <= 255; duty += 5) {
ledcWrite(pwmChannel, duty);
Serial.print("Fan Speed (PWM Duty): ");
Serial.println(duty);
delay(100);
}
// Gradually decrease fan speed
for (int duty = 255; duty >= 0; duty -= 5) {
ledcWrite(pwmChannel, duty);
Serial.print("Fan Speed (PWM Duty): ");
Serial.println(duty);
delay(100);
}
}