
Documentation Center
/**
@file RAK13003_GPIO_Expander_IO_MCP32.ino
@author rakwireless.com
@brief Use IIC to expand 16 GPIO.
Configure PA input PB output, or PA output PB input.Serial port print GPIO status.
@version 0.1
@date 2021-2-24
@copyright Copyright (c) 2021
**/
#
include
<Wire.h>
#
include
<Adafruit_MCP23017.h>
//click here to get the library: http://librarymanager/All#Adafru
#
define
PAIN_PBOUT
//PB is set as output here and PA as input.
//#define PAOUT_PBIN
Adafruit_MCP23017 mcp
;
void
setup
()
{
pinMode
(
WB_IO2
,
OUTPUT
);
digitalWrite
(
WB_IO2
,
1
);
// Reset device
pinMode
(
WB_IO4
,
OUTPUT
);
digitalWrite
(
WB_IO4
,
1
);
delay
(
10
);
digitalWrite
(
WB_IO4
,
0
);
delay
(
10
);
digitalWrite
(
WB_IO4
,
1
);
delay
(
10
);
// Initialize Serial for debug output
time_t
timeout
=
millis
();
Serial
.
begin
(
115200
);
while
(
!
Serial
)
{
if
((
millis
()
-
timeout
)
<
5000
)
{
delay
(
100
);
}
else
{
break
;
}
}
Serial
.
println
(
"MCP23017 GPIO Input Output Test."
);
mcp
.
begin
();
// use default address 0.
#
ifdef
PAIN_PBOUT
for
(
int
i
=
0
;
i
<
8
;
i
++
)
{
mcp
.
pinMode
(
i
,
INPUT
);
// PA input.
}
for
(
int
j
=
8
;
j
<
16
;
j
++
)
{
mcp
.
pinMode
(
j
,
OUTPUT
);
// PB output.
}
mcp
.
digitalWrite
(
8
,
LOW
);
// The output state of the PB port can be changed to high or low leve
mcp
.
digitalWrite
(
9
,
HIGH
);
//PIN PB1
mcp
.
digitalWrite
(
10
,
LOW
);
//PIN PB2
c