コード例 #1
0
        public static MCP23017GpioController CreateDevice(string i2cBus, int address = HARDWARE_BASE_ADDRESS, I2cBusSpeed busSpeed = I2cBusSpeed.StandardMode, I2cSharingMode sharingMode = I2cSharingMode.Exclusive, IGpioPin interruptPin = null)
        {
            // Create the I2c connection settings instance.
            I2cConnectionSettings settings = new I2cConnectionSettings(address)
            {
                BusSpeed = busSpeed, SharingMode = sharingMode
            };

            // Create the I2c device instance
            var i2cDevice = I2cDevice.FromId(i2cBus, settings);

            if (i2cDevice == null)
            {
                // No device was created
                throw new Exception("Unable to create I2c instance.");
            }

            try
            {
                var instance = new MCP23017GpioController(i2cDevice, interruptPin);

                // Set the defaults for our device. These are power on defaults
                instance.WriteRegister(MCP23017_IODIRA, 0xFF);
                instance.WriteRegister(MCP23017_IPOLA, 0x00);
                instance.WriteRegister(MCP23017_GPINTENA, 0x00);
                instance.WriteRegister(MCP23017_DEFVALA, 0x00);
                instance.WriteRegister(MCP23017_INTCONA, 0x00);
                instance.WriteRegister(MCP23017_IOCONA, 0x00);
                instance.WriteRegister(MCP23017_GPPUA, 0x00);
                instance.WriteRegister(MCP23017_GPIOA, 0x00);
                instance.WriteRegister(MCP23017_OLATA, 0x00);

                instance.WriteRegister(MCP23017_IODIRB, 0xFF);
                instance.WriteRegister(MCP23017_IPOLB, 0x00);
                instance.WriteRegister(MCP23017_GPINTENB, 0x00);
                instance.WriteRegister(MCP23017_DEFVALB, 0x00);
                instance.WriteRegister(MCP23017_INTCONB, 0x00);
                instance.WriteRegister(MCP23017_IOCONB, 0x00);
                instance.WriteRegister(MCP23017_GPPUB, 0x00);
                instance.WriteRegister(MCP23017_GPIOB, 0x00);
                instance.WriteRegister(MCP23017_OLATB, 0x00);

                return(instance);
            }
            catch (Exception)
            {
                i2cDevice?.Dispose();
                throw;
            }
        }
コード例 #2
0
 internal MCP23017GpioPin(MCP23017GpioController gpioController, int pinNumber, GpioSharingMode sharingMode)
 {
     _gpioController = gpioController;
     PinNumber       = pinNumber;
     SharingMode     = sharingMode;
 }