"GPIO" (General Purpose I/O)
Note: By default, "GPIO" allows any pin to be used interchangeably in read and write mode. DeviceConfigure can be used to configure specific pins as read or write.
The possible values of GPIO pins are taken to be 0 and 1, corresponding to "low" and "high".
"GPIO" allows pins to be specified by integers.
On a Raspberry Pi, the following pins are available for reading and writing: 4, 7, 8, 9, 10, 11, 14, 15, 17, 18, 22, 23, 24, 25, 28, 29, 30, 31.
On the Raspberry Pi, pins can also be referenced using the WiringPi numbering scheme by specifying them in the form "WiringPin".
Device Discovery

-
FindDevices["GPIO"] gives a GPIO DeviceObject if GPIO is available on your computer system.
Opening the Device

-
If GPIO is present, it is always accessible and does not require a connection step.
-
DeviceOpen["GPIO"] is not required, but can be used to obtain a DeviceObject whose properties can be queried.
Configuring the Device

-
Configuration is not required for GPIO. Without configuration, any pin will automatically switch between input and output on read and write. Note that if a pin is used in a direction that is not intended, this may damage your system.
-
Setting the direction to None releases a pin if it has previously been configured.
-
DeviceConfigure ignores requests to configure any pin that is being accessed by an asynchronous task.
-
If an attempt is made to use a GPIO pin in a direction inconsistent with its configuration, an error will be generated.
DeviceConfigure["GPIO",n->dir]
sets the direction of pin n to be dir.
DeviceConfigure["GPIO",{n1->dir1,n2->dir2,…}]
sets direction diri for pin pini.
Reading Data

-
The value of a GPIO pin is always either 0 or 1.
-
Note By default, "GPIO" allows any pin to be used interchangeably in read and write mode. DeviceConfigure can be used to configure specific pins as read or write.
DeviceRead["GPIO",p]
gives the value of GPIO pin p.
DeviceRead["GPIO",{p1,p2,…}]
gives a list of the values of GPIO pins pi.
Writing Data

-
The value v must be either 0 or 1.
-
Note By default, "GPIO" allows any pin to be used interchangeably in read and write mode. DeviceConfigure can be used to configure specific pins as read or write.
DeviceWrite["GPIO",p->v]
writes the value v to GPIO pin p.
Closing and Releasing Resources

-
DeviceClose["GPIO"] is not required, but can effectively be used to reset all pins to their default state and marks the corresponding DeviceObject as closed.
Related Guides
History
Introduced in 2014 (10.0)