GrovePi v0.3.2 GrovePi.Potentiometer View Source

Listen for events from a GrovePi potentiometer or rotary angle sensor. There is only one type of event by default; :changed. When registering for an event the potentiometer will send a message similar to {pin, :changed, {value: 1} with the value being a number from 0-1023 that maps to 0 to 5 volts. The potentiometer works by polling GrovePi.Analog on the pin that you have registered to a potentiometer.

Example usage:

iex> {:ok, potentiometer} = GrovePi.Potentiometer.start_link(16)
:ok
iex> GrovePi.Potentiometer.subscribe(16, :changed)
:ok

The GrovePi.Potentiometer.DefaultTrigger is written so when the value of the potentiometer changes, the subscribed process will receive a message in the form of {pid, :changed, %{value: value}. The message should be received using GenServer handle_info/2.

For example:

def handle_info({_pid, :changed, %{value: value}}, state) do
  # do something with `value`
  {:noreply, state}
end

Link to this section Summary

Link to this section Functions

Link to this function change_polling(pin, interval, prefix \\ Default) View Source
change_polling(GrovePi.pin, integer, atom) :: :ok

Stops the current scheduled polling event and starts a new one with the new interval.

Callback implementation for GrovePi.Poller.read_value/2.

Link to this function start_link(pin, opts \\ []) View Source

Options

  • :poll_interval - The time in ms between polling for state.i If set to 0 polling will be turned off. Default: 100
  • :trigger - This is used to pass in a trigger to use for triggering events. See specific poller for defaults
  • :trigger_opts - This is used to pass options to a trigger init1. The default is []
Link to this function stop_polling(pin, prefix \\ Default) View Source
stop_polling(GrovePi.pin, atom) :: :ok

Stops polling immediately

Link to this function subscribe(pin, event, prefix \\ Default) View Source
subscribe(GrovePi.pin, GrovePi.Trigger.event, atom) ::
  {:ok, pid} |
  {:error, {:already_registered, pid}}