.. _blink-led-sample: .. _pwm-blinky-sample: PWM Blinky ########## Overview ******** This application blinks a LED using the :ref:`PWM API `. See :ref:`blinky-sample` for a GPIO-based sample. The LED starts blinking at a 1 Hz frequency. The frequency doubles every 4 seconds until it reaches 64 Hz. The frequency will then be halved every 4 seconds until it returns to 1 Hz, completing a single blinking cycle. This faster-then-slower blinking cycle then repeats forever. Some PWM hardware cannot set the PWM period to 1 second to achieve the blinking frequency of 1 Hz. This sample calibrates itself to what the hardware supports at startup. The maximum PWM period is decreased appropriately until a value supported by the hardware is found. Requirements ************ The board must have an LED connected to a PWM output channel. The PWM controlling this LED must be configured using the ``pwm_led0`` :ref:`devicetree ` alias, usually in the :ref:`BOARD.dts file `. You will see this error if you try to build this sample for an unsupported board: .. code-block:: none Unsupported board: pwm_led0 devicetree alias is not defined Wiring ****** No additional wiring is necessary if ``pwm_led0`` refers to hardware that is already connected to an LED on the board. In these other cases, however, manual wiring is necessary: .. list-table:: :header-rows: 1 * - Board - Wiring * - :ref:`nucleo_f401re_board` - connect PWM2 (PA0) to an LED * - :ref:`nucleo_l476rg_board` - connect PWM2 (PA0) to an LED * - :ref:`stm32f4_disco_board` - connect PWM2 (PA0) to an LED * - :ref:`nucleo_f302r8_board` - connect PWM2 (PA0) to an LED * - :ref:`nucleo_f103rb_board` - connect PWM1 (PA8) to an LED Building and Running ******************** To build and flash this sample for the :ref:`nrf52840dk_nrf52840`: .. zephyr-app-commands:: :zephyr-app: samples/basic/blinky_pwm :board: nrf52840dk_nrf52840 :goals: build flash :compact: Change ``nrf52840dk_nrf52840`` appropriately for other supported boards. After flashing, the sample starts blinking the LED as described above. It also prints information to the board's console.