:mod:`frequencyio` ================== .. py:module:: frequencyio .. autoapi-nested-parse:: Support for frequency based protocols .. warning:: This module is not available in SAMD21 builds. See the :ref:`module-support-matrix` for more info. All classes change hardware state and should be deinitialized when they are no longer needed if the program continues after use. To do so, either call :py:meth:`!deinit` or use a context manager. See :ref:`lifetime-and-contextmanagers` for more info. For example:: import frequencyio import time from board import * frequency = frequencyio.FrequencyIn(D13) frequency.capture_period = 15 time.sleep(0.1) This example will initialize the the device, set :py:data:`~frequencyio.FrequencyIn.capture_period`, and then sleep 0.1 seconds. CircuitPython will automatically turn off FrequencyIn capture when it resets all hardware after program completion. Use ``deinit()`` or a ``with`` statement to do it yourself. .. py:class:: FrequencyIn(pin: microcontroller.Pin, capture_period: int = 10) Read a frequency signal FrequencyIn is used to measure the frequency, in hertz, of a digital signal on an incoming pin. Accuracy has shown to be within 10%, if not better. It is recommended to utilize an average of multiple samples to smooth out readings. Frequencies below 1KHz are not currently detectable. FrequencyIn will not determine pulse width (use ``PulseIn``). .. attribute:: capture_period :annotation: :Any The capture measurement period. Lower incoming frequencies will be measured more accurately with longer capture periods. Higher frequencies are more accurate with shorter capture periods. .. note:: When setting a new ``capture_period``, all previous capture information is cleared with a call to ``clear()``. .. method:: deinit(self) Deinitialises the FrequencyIn and releases any hardware resources for reuse. .. method:: __enter__(self) No-op used by Context Managers. .. method:: __exit__(self) Automatically deinitializes the hardware when exiting a context. See :ref:`lifetime-and-contextmanagers` for more info. .. method:: pause(self) Pause frequency capture. .. method:: resume(self) Resumes frequency capture. .. method:: clear(self) Clears the last detected frequency capture value. .. method:: __get__(self, index: Any) Returns the value of the last frequency captured.