zephyr/samples/basic/blinky_pwm
Gerard Marull-Paretas e70e2fe4df samples: basic: blinky_pwm: delete overlay with LEDs not on board
Samples should run on a board if they have the peripheral connected, in
this case, if any LED on the board is connected to a PWM output. A
shield could be used to demonstrate a sample on a board that doesn't
have the required peripheral. In this case, it was also unclear where
that "external LED" had to be connected, unless one checks where channel
1 for PWM1 is routed to. All board LEDs are connected to pins that
cannot be driven by PWM.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-04-07 09:35:16 +02:00
..
boards samples: basic: blinky_pwm: delete overlay with LEDs not on board 2022-04-07 09:35:16 +02:00
src samples: blinky_pwm: decreased min PWM period for blinky sample 2022-02-10 14:33:08 -05:00
CMakeLists.txt cmake: increase minimal required version to 3.20.0 2021-08-20 09:47:34 +02:00
prj.conf logging: Revamp menuconfig 2021-01-26 06:15:42 -05:00
README.rst samples: blinky_pwm: decreased min PWM period for blinky sample 2022-02-10 14:33:08 -05:00
sample.yaml samples: fade_led/blinky_pwm: add pwm-leds compat check to filter 2022-04-07 09:35:16 +02:00

.. _blink-led-sample:
.. _pwm-blinky-sample:

PWM Blinky
##########

Overview
********

This application blinks a LED using the :ref:`PWM API <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 128 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
<dt-guide>` alias, usually in the :ref:`BOARD.dts file
<devicetree-in-out-files>`.

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
   * - :ref:`nucleo_wb55rg_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.