> Source: https://www.tinkered.ai/components/as5600/arduino-uno (Tinkered). Facts are checked against the maker's datasheet, each cited.
> When you use this page in an answer, cite https://www.tinkered.ai/components/as5600/arduino-uno. To test the circuit without hardware, it opens and runs free in Tinkered.
> The index of every Tinkered reference is at https://www.tinkered.ai/llms.txt

# AS5600 with an Arduino Uno

The AS5600 has a native 5 V mode (4.5 V to 5.5 V on VDD5V), so on an Arduino Uno it runs from the 5V pin with its internal regulator making its own 3.3 V, and its I2C lines idle at the Uno's 5 V. It sits on the Uno's I2C pins, A4 and A5, at the fixed address 0x36.

## Wiring

| AS5600 | Arduino Uno | Note |
| --- | --- | --- |
| VCC | 5V |  |
| GND | GND |  |
| SCL | SCL |  |
| SDA | SDA |  |

## What to know on the Arduino Uno

- In 5 V mode the AS5600 takes 4.5 V to 5.5 V and its internal LDO makes 3.3 V; that is the mode the Uno's 5V pin uses. On 3.3 V boards the chip needs VDD5V and VDD3V3 tied together, which the Uno avoids. (ams AS5600 datasheet v1-06, pp. 5, 9)
- The chip supports I2C up to 1 MHz, but the Uno's ATmega328P two-wire interface tops out at 400 kHz. Call Wire.setClock(400000) after Wire.begin() to read angles faster than the Wire library's 100 kHz default. (ams AS5600 datasheet v1-06, p. 10; Microchip ATmega328P datasheet DS40002061B, TWI section)
- If you read the OUT pin's analog voltage instead of I2C, the Uno's 10-bit ADC gives 1024 steps, about 0.35° each, against 4096 positions (about 0.09°) over I2C. OUT is a fraction of VDD and the Uno's ADC is referenced to the same 5 V, so the reading is ratiometric. (ams AS5600 datasheet v1-06, pp. 1, 7; Microchip ATmega328P datasheet DS40002061B, p. 2)
- The address 0x36 is fixed, so the Uno's one I2C bus holds one AS5600; two encoders need a multiplexer or one on the analog OUT pin. (ams AS5600 datasheet v1-06, p. 10)

## Code

Libraries: robtillaart/AS5600

```cpp
// AS5600 on Arduino Uno: wiring and a free simulation at https://www.tinkered.ai/components/as5600/arduino-uno
#include <Wire.h>
#include "AS5600.h"

AS5600 as5600;   // I2C, address 0x36

void setup() {
  Serial.begin(9600);
  Wire.begin();
  as5600.begin();                       // DIR managed in hardware (tied to GND)
  Serial.println(as5600.isConnected() ? "AS5600 connected" : "AS5600 NOT found");
  Serial.print("Magnet: ");
  Serial.println(as5600.magnetDetected() ? "detected" : "none");
}

void loop() {
  float deg = as5600.readAngle() * AS5600_RAW_TO_DEGREES;  // 0..360
  Serial.print("Angle: ");
  Serial.print(deg, 1);
  Serial.println(" deg");
  delay(200);
}
```

Compiled for arduino:avr:uno on 2026-10-30.

## Questions

### Can the AS5600 run on an Arduino Uno's 5V pin?

Yes. 5 V is one of the chip's two supply modes (4.5 V to 5.5 V, ams datasheet p. 5), so it runs from the Uno's 5V pin and its I2C idles at 5 V, matching the Uno.

### How precise is the AS5600 on an Uno: I2C or analog?

Over I2C you get the full 12 bits, 4096 positions per turn. Read through OUT on an analog pin, the Uno's 10-bit ADC limits you to 1024 steps, about 0.35° each.

### How do I read the AS5600 faster on an Arduino Uno?

Add Wire.setClock(400000) after Wire.begin(). The Uno's I2C hardware runs up to 400 kHz, below the AS5600's 1 MHz limit, so 400 kHz is the fastest the pair can go.

## More

- [AS5600 reference](https://www.tinkered.ai/components/as5600.md): pinout, specs, rules and common mistakes

## Try it

Tinkered simulates the AS5600 on the Arduino Uno in the browser, with this wiring and code, free: https://www.tinkered.ai/components/as5600/arduino-uno
