zephyr/samples/sensor/qdec
Piotr Kosycarz 6898f93e48 samples: sensor: qdec: verify position value
At least for nrf boards, the emulation timer settings generate
reading around -60 degrees. Verify that value with some threshold.

Delay the first reading to prevent 0 at the beginning.

Signed-off-by: Piotr Kosycarz <piotr.kosycarz@nordicsemi.no>
2024-06-24 12:43:25 -04:00
..
boards samples: sensor: qdec: align pins for nrf boards 2024-06-24 12:43:25 -04:00
src samples: sensor: qdec: verify position value 2024-06-24 12:43:25 -04:00
CMakeLists.txt samples: sensor: adding a sample application for the STM32 qdec driver 2022-10-03 10:10:31 +02:00
prj.conf samples: sensor: adding a sample application for the STM32 qdec driver 2022-10-03 10:10:31 +02:00
README.rst doc: fix incorrect bullet lists 2024-06-20 14:07:32 -04:00
sample.yaml samples: sensor: qdec: verify position value 2024-06-24 12:43:25 -04:00

.. _qdec_sensor:

Quadrature Decoder Sensor
#########################

Overview
********

This sample reads the value of the counter which has been configured in
quadrature decoder mode.

It requires:

* an external mechanical encoder
* pin to be properly configured in the device tree

Building and Running
********************

In order to run this sample you need to:

* enable the quadrature decoder device in your board's DT file or board overlay
* add a new alias property named ``qdec0`` and make it point to the decoder
  device you just enabled

For example, here's how the overlay file of an STM32F401 board looks like when
using decoder from TIM3 through pins PA6 and PA7:

.. code-block:: dts

    / {
        aliases {
            qdec0 = &qdec;
        };
    };

    &timers3 {
        status = "okay";

        qdec: qdec {
            status = "okay";
            pinctrl-0 = <&tim3_ch1_pa6 &tim3_ch2_pa7>;
            pinctrl-names = "default";
            st,input-polarity-inverted;
            st,input-filter-level = <FDIV32_N8>;
            st,counts-per-revolution = <16>;
        };
    };

Sample Output
=============

Once the MCU is started it prints the counter value every second on the
console

.. code-block:: console

    Quadrature decoder sensor test
    Position = 0 degrees
    Position = 15 degrees
    Position = 30 degrees
    ...


Of course the read value changes once the user manually rotates the mechanical
encoder.

.. note::

    The reported increment/decrement can be larger/smaller than the one shown
    in the above example. This depends on the mechanical encoder being used and
    ``st,counts-per-revolution`` value.