: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 time import frequencyio import board frequency = frequencyio.FrequencyIn(board.D11) 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. .. raw:: html

Available on these boards

.. 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``). Create a FrequencyIn object associated with the given pin. :param ~microcontroller.Pin pin: Pin to read frequency from. :param int capture_period: Keyword argument to set the measurement period, in milliseconds. Default is 10ms; range is 1ms - 500ms. Read the incoming frequency from a pin:: import frequencyio import board frequency = frequencyio.FrequencyIn(board.D11) # Loop while printing the detected frequency while True: print(frequency.value) # Optional clear() will reset the value # to zero. Without this, if the incoming # signal stops, the last reading will remain # as the value. frequency.clear() .. py:attribute:: capture_period :annotation: :int 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()``. .. py:method:: deinit() -> None Deinitialises the FrequencyIn and releases any hardware resources for reuse. .. py:method:: __enter__() -> FrequencyIn No-op used by Context Managers. .. py:method:: __exit__() -> None Automatically deinitializes the hardware when exiting a context. See :ref:`lifetime-and-contextmanagers` for more info. .. py:method:: pause() -> None Pause frequency capture. .. py:method:: resume() -> None Resumes frequency capture. .. py:method:: clear() -> None Clears the last detected frequency capture value. .. py:method:: __get__(index: int) -> int Returns the value of the last frequency captured.