Encoder

Description

Encoders are available on the following module:

Main characteristics

  • Accurate measurement of rotation count, angular position, and speed.

Warning

Encoders use digital inputs DIN_1 to DIN_4 of the OI-Stepper module. When you use an encoder, the corresponding inputs are no longer available as standard digital inputs.

Example of connection for an encoder

Characteristics

Encoder specifications

Requirements

Value

Remark

Voltage

5 - 30V

Maximum number of encoders

2

Code examples

The example code below demonstrates how to use an encoder with the OI-Stepper module:

/**
 * @file Encoder.cpp
 * @brief Encoder example using OpenIndus API
 * @author Kévin Lefeuvre (kevin.lefeuvre@openindus.com)
 * @copyright (c) [2025] OpenIndus, Inc. All rights reserved.
 * @see https://openindus.com
 */

#include "OpenIndus.h"
#include "Arduino.h"

OIStepper stepper;

void setup(void)
{
    printf("Hello OpenIndus!\n");
    stepper.encoder[0]->begin(DIN1, DIN2, 1024);
}

void loop(void)
{
    delay(1000);
    printf("Revolutions : %d | Pulses : %d | Angle : %.2frad | Speed : %.2fp/s\n", 
        stepper.encoder[0]->getRevolutions(),
        stepper.encoder[0]->getPulses(),
        stepper.encoder[0]->getAngle(),
        stepper.encoder[0]->getSpeed());
}

Software API

class Encoder

Public Functions

int begin(DIn_Num_t A, DIn_Num_t B, int16_t ppr)

Encoder initialization.

Parameters:
  • A – Digital input number A

  • B – Digital input number B

  • ppr – Pulse per revolution

Returns:

int

void end(void)

Encoder end.

void reset(void)

Reset the number of pulses and revolutions.

int getRevolutions(void)

Get the number of revolutions.

Returns:

int number of revolutions

int getPulses(void)

Get the number of pulses.

Returns:

int number of pulses

float getAngle(void)

Get the angle.

Returns:

float angle in radians

float getSpeed(void)

Get the speed.

Returns:

float speed in pulses per second