Is it possible to specify a pin upon which the data sent over i2c can act?
You can use a struct to send multiple things, like this:



#include &lt;Wire.h&gt;

const byte SLAVE_ADDRESS = 42;

struct t_message
{
  byte pin;
  byte speed;
} message;

void setup ()
{
  Wire.begin ();   // initialize master
}  // end of setup

void loop ()
{
  // set desired parameters
  message.pin = 10;
  message.speed = 50;

  // send the message
  Wire.beginTransmission (SLAVE_ADDRESS);  
  Wire.write ((byte *) &amp;message, sizeof message);
  Wire.endTransmission ();
}  // end of loop




More information about I2C - Two-Wire Peripheral Interface - for Arduino



On that page is mentioned how to Send and receive any data type. This includes structs. Using the code there you could send a struct, and receive a struct.