← Back to Course
PWM for LED Dimming and Motor Speed
🎛️ PWM - Analog Output on ESP8266
ESP8266 supports PWM on most GPIO pins using the analogWrite() function.
📖 LED Dimming Example:
#define LED_PIN 4
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// Fade LED up
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(LED_PIN, brightness);
delay(5);
}
delay(1000);
// Fade LED down
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(LED_PIN, brightness);
delay(5);
}
delay(1000);
}
💧 Variable Speed Water Pump:
#define PUMP_PIN 4
#define SOIL_DRY 20
#define SOIL_WET 60
void setup() {
pinMode(PUMP_PIN, OUTPUT);
}
void loop() {
int moisture = readSoilMoisture(); // Your sensor function
if (moisture < SOIL_DRY) {
analogWrite(PUMP_PIN, 255); // Full speed
Serial.println("Pump: FULL SPEED");
}
else if (moisture < SOIL_WET) {
int speed = map(moisture, SOIL_DRY, SOIL_WET, 255, 50);
analogWrite(PUMP_PIN, speed);
Serial.print("Pump speed: ");
Serial.println(speed);
}
else {
analogWrite(PUMP_PIN, 0); // Off
Serial.println("Pump: OFF");
}
delay(60000);
}
⚠️ Important:
For water pumps, use a MOSFET (like IRLZ44N) or motor driver. PWM can damage standard relays!
💡 Key Takeaways:
- Apply these concepts directly to your farm or project.
- Take notes on important details for the quiz.
- Use the button below to track your progress.
×