

The Adafruit ANO Rotary Navigation Encoder Breakout is a compact and versatile input device designed for easy navigation and control in electronic projects. This breakout board features a rotary encoder with a built-in push-button, enabling both rotational and press-based input. It is ideal for creating user interfaces, such as menu navigation, volume control, or parameter adjustments in embedded systems.








The Adafruit ANO Rotary Navigation Encoder Breakout is designed for ease of use and compatibility with a wide range of microcontrollers, including Arduino boards. Below are the key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.3V or 5V |
| Encoder Type | Incremental Rotary Encoder |
| Push-Button Type | Momentary |
| Output Signals | A, B (quadrature signals), and SW |
| Dimensions | 20mm x 20mm x 12mm |
| Mounting Holes | 2 x M2 holes |
The breakout board has a 5-pin header for easy connection. Below is the pinout:
| Pin Name | Description |
|---|---|
| GND | Ground connection |
| VCC | Power supply input (3.3V or 5V) |
| A | Quadrature signal A (used for detecting rotation direction and steps) |
| B | Quadrature signal B (used for detecting rotation direction and steps) |
| SW | Push-button signal (active LOW when pressed) |
VCC pin to a 3.3V or 5V power source and the GND pin to ground.A and B pins to digital input pins on your microcontroller to read the rotary encoder's quadrature signals.SW pin to a digital input pin to detect button presses.A, B, and SW pins, so no external resistors are required.A and B signals to determine the direction and number of steps rotated. Monitor the SW pin to detect button presses.VCC voltage matches your microcontroller's logic level (3.3V or 5V).Below is an example Arduino sketch to read the rotary encoder and push-button signals:
// Define pin connections
const int pinA = 2; // Connect to encoder pin A
const int pinB = 3; // Connect to encoder pin B
const int pinSW = 4; // Connect to encoder push-button pin SW
// Variables to track encoder state
int lastStateA;
int currentStateA;
int encoderPosition = 0;
void setup() {
pinMode(pinA, INPUT_PULLUP); // Enable internal pull-up resistor for pin A
pinMode(pinB, INPUT_PULLUP); // Enable internal pull-up resistor for pin B
pinMode(pinSW, INPUT_PULLUP); // Enable internal pull-up resistor for pin SW
// Initialize serial communication for debugging
Serial.begin(9600);
// Read initial state of pin A
lastStateA = digitalRead(pinA);
}
void loop() {
// Read the current state of pin A
currentStateA = digitalRead(pinA);
// Check if the state of pin A has changed
if (currentStateA != lastStateA) {
// Determine rotation direction based on pin B state
if (digitalRead(pinB) != currentStateA) {
encoderPosition++; // Clockwise rotation
} else {
encoderPosition--; // Counterclockwise rotation
}
// Print the current encoder position
Serial.print("Encoder Position: ");
Serial.println(encoderPosition);
}
// Update the last state of pin A
lastStateA = currentStateA;
// Check if the push-button is pressed
if (digitalRead(pinSW) == LOW) {
Serial.println("Button Pressed!");
delay(200); // Debounce delay
}
}
No Response from the Encoder:
VCC and GND pins are properly connected.A, B, and SW pins are connected to the correct microcontroller pins.Incorrect or Erratic Readings:
Push-Button Not Detected:
SW pin is connected to a digital input pin.Encoder Skips Steps:
Q: Can I use this breakout board with a Raspberry Pi?
A: Yes, the Adafruit ANO Rotary Navigation Encoder Breakout is compatible with Raspberry Pi. Use GPIO pins to read the A, B, and SW signals, and ensure proper voltage levels.
Q: Does the breakout board support 3.3V logic?
A: Yes, the board is compatible with both 3.3V and 5V logic levels, making it suitable for a wide range of microcontrollers.
Q: How many steps per revolution does the encoder have?
A: The encoder typically has 20 steps per revolution, but this may vary slightly depending on the specific model.
Q: Can I use this encoder for high-speed applications?
A: While the encoder is suitable for most general-purpose applications, it may not perform well at very high rotational speeds due to signal timing limitations. Use interrupts for better performance in such cases.