Encoder
Description
Encoders are available on the following module:
OI-Stepper (x2)
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.

Characteristics
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 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
-
int begin(DIn_Num_t A, DIn_Num_t B, int16_t ppr)