Skip to content

I2C Sensor Addressing

David Lechner edited this page Feb 9, 2014 · 2 revisions

I2C uses a 7-bit addressing scheme (there is also 10-bit addressing but we are not using it). When sending an address over the bus, the address is shifted to the left 1 bit and the least significant bit is used to indicate read or write. It is important to know this because LEGO and 3rd-party sensor manufacturers use the shifted value as the address in their documentation. This shifted value is also used in most other NXT/EV3 programming languages/environments.

ev3dev is different because the Linux kernel uses the unshifted value as the I2C address. This means you will have to convert the value to get the correct address. Shift to the right is the same as divide by 2, so get out your hexadecimal calculator and do some math!

Or for the engineer type folks that prefer tables...

Shifted Address Unshifted Address Notes Shifted Address Unshifted Address Notes
0x00 0x00 Illegal 0x80 0x40
0x02 0x01 NXT Ultrasonic and many 3rd party sensors 0x82 0x41
0x04 0x02 LEGO Energy Storage 0x84 0x42
0x06 0x03 0x86 0x43
0x08 0x04 0x88 0x44
0x0A 0x05 0x8A 0x45
0x0C 0x06 0x8C 0x46
0x0E 0x07 0x8E 0x47
0x10 0x08 Some HiTechnic sensors 0x90 0x48
0x12 0x09 0x92 0x49
0x14 0x0A mindsensors.com Light Sensor Array 0x94 0x4A
0x16 0x0B 0x96 0x4B
0x18 0x0C 0x98 0x4C LEGO Temperature Sensor
0x1A 0x0D 0x9A 0x4D
0x1C 0x0E 0x9C 0x4E
0x1E 0x0F 0x9E 0x4F
0x20 0x10 0xA0 0x50
0x22 0x11 0xA2 0x51
0x24 0x12 0xA4 0x52
0x26 0x13 0xA6 0x53
0x28 0x14 0xA8 0x54
0x2A 0x15 0xAA 0x55
0x2C 0x16 0xAC 0x56
0x2E 0x17 0xAE 0x57
0x30 0x18 0xB0 0x58
0x32 0x19 0xB2 0x59
0x34 0x1A 0xB4 0x5A
0x36 0x1B 0xB6 0x5B
0x38 0x1C 0xB8 0x5C
0x3A 0x1D 0xBA 0x5D
0x3C 0x1E 0xBC 0x5E
0x3E 0x1F 0xBE 0x5F
0x40 0x20 0xC0 0x60
0x42 0x21 0xC2 0x61
0x44 0x22 0xC4 0x62
0x46 0x23 0xC6 0x63
0x48 0x24 0xC8 0x64
0x4A 0x25 0xCA 0x65
0x4C 0x26 0xCC 0x66
0x4E 0x27 0xCE 0x67
0x50 0x28 0xD0 0x68
0x52 0x29 0xD2 0x69
0x54 0x2A 0xD4 0x6A
0x56 0x2B 0xD6 0x6B
0x58 0x2C 0xD8 0x6C
0x5A 0x2D 0xDA 0x6D
0x5C 0x2E 0xDC 0x6E
0x5E 0x2F 0xDE 0x6F
0x60 0x30 0xE0 0x70
0x62 0x31 0xE2 0x71
0x64 0x32 0xE4 0x72
0x66 0x33 0xE6 0x73
0x68 0x34 0xE8 0x74
0x6A 0x35 0xEA 0x75
0x6C 0x36 0xEC 0x76
0x6E 0x37 0xEE 0x77
0x70 0x38 0xF0 0x78
0x72 0x39 0xF2 0x79
0x74 0x3A 0xF4 0x7A
0x76 0x3B 0xF6 0x7B
0x78 0x3C 0xF8 0x7C
0x7A 0x3D 0xFA 0x7D
0x7C 0x3E 0xFC 0x7E
0x7E 0x3F 0xFE 0x7F
Clone this wiki locally