public static void main(String[] args) throws Exception {
// create gpio controller
final GpioController gpio = GpioFactory.getInstance();
// create custom MCP23008 GPIO provider
final MCP23008GpioProvider provider = new MCP23008GpioProvider(I2CBus.BUS_1, I2C_ADDRESS);
GpioPinDigitalOutput myOutputs[] = {
gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_00),
gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_01),
gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_02),
gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_03),
gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_04),
gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_05),
gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_06),
gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_07, PinState.LOW)
};
GpioLcdDisplay lcd = new GpioLcdDisplay(row, col, myOutputs[1].getPin(), myOutputs[2].getPin(), myOutputs[3].getPin(), myOutputs[4].getPin(), myOutputs[5].getPin(), myOutputs[6].getPin());
}
0 1 2 3 4 5 6 7 8 9 a b c d e f00: 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f70: 70 71 72 73 74 75 76 77
Question #2. - can you post your i2cdetect output?
Question #3. - when you wired the backpack to the lcd did you use 4 data lines or 8?
import java.io.IOException;
import com.pi4j.gpio.extension.mcp.MCP23008GpioProvider;import com.pi4j.gpio.extension.mcp.MCP23008Pin;import com.pi4j.io.gpio.GpioController;import com.pi4j.io.gpio.GpioFactory;import com.pi4j.io.gpio.GpioPinDigitalInput;import com.pi4j.io.gpio.GpioPinDigitalOutput;import com.pi4j.io.gpio.PinPullResistance;import com.pi4j.io.gpio.PinState;import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;import com.pi4j.io.gpio.event.GpioPinListenerDigital;import com.pi4j.io.i2c.I2CBus;import com.pi4j.io.i2c.I2CFactory.UnsupportedBusNumberException;
public class MCP23008GpioExample {
public static void main(String args[]) throws InterruptedException, UnsupportedBusNumberException, IOException {
System.out.println("<--Pi4J--> MCP23008 GPIO Example ... started.");
// create gpio controller final GpioController gpio = GpioFactory.getInstance();
// create custom MCP23008 GPIO provider
final MCP23008GpioProvider provider = new MCP23008GpioProvider(I2CBus.BUS_1, 0x20);
// provision gpio output pins and make sure they are all LOW at startup GpioPinDigitalOutput myOutputs[] = { gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_00, "MyOutput-B0", PinState.LOW), gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_01, "MyOutput-B1", PinState.LOW), gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_02, "MyOutput-B2", PinState.LOW), gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_03, "MyOutput-B3", PinState.LOW), gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_04, "MyOutput-B4", PinState.LOW), gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_05, "MyOutput-B5", PinState.LOW), gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_06, "MyOutput-B6", PinState.LOW), gpio.provisionDigitalOutputPin(provider, MCP23008Pin.GPIO_07, "MyOutput-B7", PinState.LOW) };
// keep program running for 20 seconds for (int count = 0; count < 10; count++) { gpio.setState(true, myOutputs[7]); Thread.sleep(1000); gpio.setState(false, myOutputs[7]); Thread.sleep(1000); }
// stop all GPIO activity/threads by shutting down the GPIO controller // (this method will forcefully shutdown all GPIO monitoring threads and scheduled tasks) gpio.shutdown();
System.out.println("Exiting MCP23008GpioExample"); }}