I2C

This week we are using "I2C" routines to communicate with the Pololu stepper motor drivers.

I2C refers to the the Inter-Integrated Circuit protocol or $I^2C$. It's a communication protocol:

  • One (or several) microcontroller(s)
  • can send and receive information
  • to multiple peripheral devices (motors, rangefinders, computer memory, sensors,....)
  • using just two wires!
  • Each peripheral has to have a unique address.
  • meant for short distance, wired, serial (not parallel) communication: several meters.

    What is "short"? All wires act as antennas. Omnipresent electromagnetic waves will cause oscillations and interfere with your signals. Also, higher frequency signals tend to disperse / degrade the longer they travel.

  • Cheap, not particularly fast, but still 10-100 Kilo bits per second are routine.

Also called the two wire interface (that's why we're always doing things like: #include <wire.h>)

See also: A guide to Arduino & the I2C Protocol (Two Wire) - arduino.cc