.. zephyr:code-sample:: qdec :name: Quadrature Decoder Sensor :relevant-api: sensor_interface Get rotation data from a 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 = ; 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.