/// <summary> /// Constructor for a single Expand 2 click. /// </summary> /// <param name="socknum">mikroBUS socket number.</param> /// <param name="addr">I<sup>2</sup>C slave address.</param> public Board(int socknum, int addr = DefaultAddress) { // Create a mikroBUS socket object IO.Objects.libsimpleio.mikroBUS.Socket S = new IO.Objects.libsimpleio.mikroBUS.Socket(socknum); // Configure hardware reset GPIO pin myrst = new IO.Objects.libsimpleio.GPIO.Pin(S.RST, IO.Interfaces.GPIO.Direction.Output, true); // Issue hardware reset Reset(); // Configure I2C bus IO.Interfaces.I2C.Bus bus; if (IO.Objects.libsimpleio.mikroBUS.Shield.I2CBus is null) { bus = new IO.Objects.libsimpleio.I2C.Bus(S.I2CBus); } else { bus = IO.Objects.libsimpleio.mikroBUS.Shield.I2CBus; } // Configure the MCP23017 mydev = new IO.Devices.MCP23017.Device(bus, addr); }
/// <summary> /// Create a single MCP23017 GPIO pin. /// </summary> /// <param name="dev">MCP23017 device object.</param> /// <param name="channel">MCP23017 I/O channel number.</param> /// <param name="dir">GPIO pin data direction.</param> /// <param name="state">Initial GPIO output state.</param> public Pin(IO.Devices.MCP23017.Device dev, int channel, IO.Interfaces.GPIO.Direction dir, bool state = false) { // Validate parameters if ((channel < IO.Devices.MCP23017.Device.MinChannel) || (channel > IO.Devices.MCP23017.Device.MaxChannel)) { throw new System.Exception("Invalid channel number."); } mask = (uint)(1 << channel); if (dir == IO.Interfaces.GPIO.Direction.Output) { dev.Direction |= mask; } else { dev.Direction &= ~mask; } this.dev = dev; this.state = state; }
/// <summary> /// Constructor for a single Expand 2 click. /// </summary> /// <param name="socknum">mikroBUS socket number.</param> /// <param name="addr">I<sup>2</sup>C slave address.</param> /// <param name="remdev">Remote I/O server device object.</param> public Board(int socknum, int addr = DefaultAddress, IO.Remote.Device remdev = null) { // Create Remote I/O server device object, if one wasn't supplied if (remdev == null) { remdev = new IO.Remote.Device(); } // Create a mikroBUS socket object IO.Remote.mikroBUS.Socket S = new IO.Remote.mikroBUS.Socket(socknum); // Configure hardware reset GPIO pin myrst = remdev.GPIO_Create(S.RST, IO.Interfaces.GPIO.Direction.Output, true); // Issue hardware reset Reset(); // Configure I2C bus IO.Interfaces.I2C.Bus bus; if (IO.Remote.mikroBUS.Shield.I2CBus is null) { bus = remdev.I2C_Create(S.I2CBus); } else { bus = IO.Remote.mikroBUS.Shield.I2CBus; } // Configure the MCP23017 mydev = new IO.Devices.MCP23017.Device(bus, addr); }