Fading

This example demonstrates the use of analog output (Pulse Width Modulation (PWM)) to fade an LED. PWM is a technique for getting an analog-like behavior from a digital output by switching it off and on very fast and with different ratio between on and off time.

Hardware Required

  • Arduino or Genuino board
  • LED
  • 220 ohm resistor
  • hook-up wires
  • breadboard

Circuit

An LED connected to digital output pin 9 through a 220 ohm resistor.

click the image to enlarge

Schematic

click the image to enlarge

image developed using Fritzing. For more circuit examples, see the Fritzing project page

Code

In this example two loops are executed one after the other to increase and then decrease the value of the output on pin 9.

/*
  Fading

  This example shows how to fade an LED using the analogWrite() function.

  The circuit:
  - LED attached from digital pin 9 to ground.

  created 1 Nov 2008
  by David A. Mellis
  modified 30 Aug 2011
  by Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Fading
*/


int ledPin = 9;    // LED connected to digital pin 9

void setup() {
  // nothing happens in setup
}

void loop() {
  // fade in from min to max in increments of 5 points:
  for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);
    // wait for 30 milliseconds to see the dimming effect
    delay(30);
  }

  // fade out from max to min in increments of 5 points:
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);
    // wait for 30 milliseconds to see the dimming effect
    delay(30);
  }
}

See Also:

  • for()
  • analogWrite()
  • delay()

  • AnalogInOutSerial - Read an analog input pin, map the result, and then use that data to dim or brighten an LED.
  • AnalogInput - Use a potentiometer to control the blinking of an LED.
  • AnalogWriteMega - Fade 12 LEDs on and o¬ff, one by one, using an Arduino or Genuino Mega board.
  • Calibration - Define a maximum and minimum for expected analog sensor values.
  • Smoothing - Smooth multiple readings of an analog input.


Last revision 2015/07/29 by SM