Skip to content


Subversion checkout URL

You can clone with
Download ZIP
An Arduino Library that allows one client Arduino to be used as an I/O extender for a manager Arduino
Arduino C++ C
Branch: master
Failed to load latest commit information.
examples Cleanup manager code.
ExtraCore.cpp Added callback for data receive.
ExtraCore.h Edited readme.
license.txt Added license.


An Arduino Library that allows one client Arduino to be used as an I/O extender for a manager Arduino.

More info:


  • Two way i2c
  • remote set digital pin modes
  • remote set digital outputs
  • remote set PWM outputs
  • remote read digital and analog pins


  • Two arduino UNO's or compatible.
  • EasyTransferI2C library
  • Wire library


  • Copy .H and .CPP to into .../Ardunio/Libraries/ExtraCore directory
  • Connect pin A4 on both Arduinos together
  • Connect pin A5 on both Arduinos together
  • Connect GND on both Arduinos together
  • load the manager sketch from examples on the primary
  • load the client sketch from examples on the secondary

Optional setup for the test sketch

Make sure Pin 13 has an LED/resistor on each board. Hook an LED/resistor to pin 6 for PWM output on the client.


ExtraCore(); Constructor

Manager Methods

void beginManager(); Start sending and receiving data as the manager.

void setPinIOstate(pin, boolean); Set the desired INPUT/OUTPUT state of a pin.

void setDigitalOutput(pin, boolean); Set the desired HIGH, LOW output state of a pin.

void setAnalogOutput(pin, pwm); Set the desired PWM (0-255) state of a pin. Ignored if not PWM cabable.

void setTriStateValue(int, boolean); Set the pullup resistor to TRUE/FALSE. True will automatically set the pin to INPUT.

boolean getDigitalReading(pin); Get the last known digital reading from the remote.

int getAnalogReading(pin); Get the last known analog reading from the remote.

void sendConfig(); Send the current desired state of all the pins to the remote. This is required to for changes to take effect.

Client methods:

void beginClient(); begin sending and recieving as client.

boolean getPinIOstate(pin); Get the desired IO state for a pin.

boolean getOutputValue(pin); Get the desired digital output value for a pin.

boolean getTriStateValue(pin); get the desired pullup resistor value for a pin.

int getAnalogValue(pin); Get the desired PWM output for a PWM pin.

void setDigitalReading(pin, value); Set the digital reading from the remote for a pin.

void setAnalogReading(pin, value); Set the Analog reading for pin.

void sendData(); Send the currently known pin readings to the manager. This is required for updates to take effect.

boolean isDataNew(); Returns true if new data has arrived since the last time it was checked.

Something went wrong with that request. Please try again.