Introduction

An Arduino UNO has a limited number of GPIO pins - but what if it is not enough? The GPIO expansion shield specifically designed for Arduino UNO-type boards. This shield greatly expands the GPIO resources to 36 pins in total, including 14 digital pins, 6 analog pins and 16 I2C pins. In addition digital and analog pins include the DFRobot "Gravity" interface, giving you in-line power and ground pins and saving you having to connect millions of jumper wires for a single sensor.

Specification

Board Overview

GPIO Shield for Arduino V1.0

Num Name Description
1 External Power 5 VDC
2 VCC Jumper Caps Choose to power from board or shield external power
3 PCA9555DB IIC Address Setting Set PCA9555DB I2C Address 0x20~0x27
4 Arduino Digital I/O Pins D0~D13
5 Arduino Analog input Pins A0~A5
6 IIC to GPIO Digital Pins P0.0~P0.7; P1.0~P1.7
7 IIC Port IIC Communication
8 UART Port UART Communication

Tutorial

PCA9555DB IIC Address

Plug = 0
Unplug = 1

A2 A1 A0 I2C Address
0 0 0 0x20 (Default)
0 0 1 0x21
0 1 0 0x22
0 1 1 0x23
1 0 0 0x24
1 0 1 0x25
1 1 1 0x26
1 1 1 0x27

"D": represents digital signal
"A": represents analog signal

One of the biggest benefits of the I/O expansion shield is more power and GND pins, allowing you to connect more sensors.

* Green: digital signal
* Blue: analog signal
* Red: VCC
* Black: GND

dfr0375-senor.png

VCC Jumper Caps

There are two Jump caps, you can change the position of two caps for the different VCC power input. See the following schematic for details:
DFR0334_Schematic.png
The middle pin is the shield VCC pin. If you connect caps on the left side, VCC pins get power from the shield external port; If you connect caps on the right side, VCC pins get power from the board 5V port;

This is suitable for some applications that require greater current.

Requirements

Connection Diagram

GPIO Shield for Arduino

Sample Code

In this section, we will use an Arduino library written by nicoverduin Github Library. About Library installation.

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif

#include "clsPCA9555.h"
#include "Wire.h"


PCA9555 ioport(0x20);

void setup()
{
  ioport.pinMode(8, OUTPUT); //Set GPIOs pinMode LED
  ioport.pinMode(15, INPUT);  //Button
}

void loop()
{
  if (ioport.digitalRead(ED15) == LOW) {
    ioport.digitalWrite(8, LOW);                  //Turn off Led
  }

  if (ioport.digitalRead(ED15) == HIGH) {
    ioport.digitalWrite(8, HIGH);                 //Turn on Led
  }

}

FAQ

For any questions/advice/cool ideas to share, please visit DFRobot Forum.

More Documents

Schematic
Layout
PCA9555 Datasheet
SVG files

DFshopping_car1.png Get Gravity: GPIO Shield for Arduino from DFRobot Store or DFRobot Distributor.

Turn to the Top