public Mcp23017OutputPin(Mcp23017I2cConnection connection, Mcp23017Pin pin) { this.connection = connection; this.pin = pin; connection.SetDirection(pin, Mcp23017PinDirection.Output); connection.SetPolarity(pin, Mcp23017PinPolarity.Normal); }
public bool GetPinStatus(Mcp23017Pin pin) { var register = ((int)pin & 0x0100) == 0x0000 ? Register.GPIOA : Register.GPIOB; connection.WriteByte((byte)register); var status = connection.ReadByte(); var bit = (byte)((int)pin & 0xFF); return (status & bit) != 0x00; }
/// <summary> /// Initializes a new instance of the <see cref="Mcp23017InputBinaryPin"/> class. /// </summary> /// <param name="connection">The connection.</param> /// <param name="pin">The pin.</param> /// <param name="resistor">The resistor.</param> /// <param name="polarity">The polarity.</param> public Mcp23017InputBinaryPin(Mcp23017I2cConnection connection, Mcp23017Pin pin, Mcp23017PinResistor resistor = Mcp23017PinResistor.None, Mcp23017PinPolarity polarity = Mcp23017PinPolarity.Normal) { this.connection = connection; this.pin = pin; connection.SetDirection(pin, Mcp23017PinDirection.Input); connection.SetResistor(pin, resistor); connection.SetPolarity(pin, polarity); }
/// <summary> /// Gets the pin status. /// </summary> /// <param name="pin">The pin.</param> /// <returns>The pin status.</returns> public bool GetPinStatus(Mcp23017Pin pin) { var register = ((int)pin & 0x0100) == 0x0000 ? Register.GPIOA : Register.GPIOB; connection.WriteByte((byte)register); var status = connection.ReadByte(); var bit = (byte)((int)pin & 0xFF); return((status & bit) != 0x00); }
public void SetPolarity(Mcp23017Pin pin, Mcp23017PinPolarity polarity) { var register = ((int)pin & 0x0100) == 0x0000 ? Register.IPOLA : Register.IPOLB; connection.WriteByte((byte)register); var polarities = connection.ReadByte(); var bit = (byte)((int)pin & 0xFF); var newPolarities = (polarity == Mcp23017PinPolarity.Inverted) ? polarities | bit : polarities & ~bit; connection.Write(new[] { (byte)register, (byte)newPolarities }); }
public void SetPinStatus(Mcp23017Pin pin, bool enabled) { var register = ((int)pin & 0x0100) == 0x0000 ? Register.GPIOA : Register.GPIOB; connection.WriteByte((byte)register); var status = connection.ReadByte(); var bit = (byte)((int)pin & 0xFF); var newStatus = enabled ? status | bit : status & ~bit; connection.Write((byte)register, (byte)newStatus); }
public void SetDirection(Mcp23017Pin pin, Mcp23017PinDirection direction) { var register = ((int) pin & 0x0100) == 0x0000 ? Register.IODIRA : Register.IODIRB; connection.WriteByte((byte)register); var directions = connection.ReadByte(); var bit = (byte)((int)pin & 0xFF); var newDirections = (direction == Mcp23017PinDirection.Input) ? directions | bit : directions & ~bit; connection.Write(new[] { (byte)register, (byte)newDirections }); }
/// <summary> /// Sets the polarity. /// </summary> /// <param name="pin">The pin.</param> /// <param name="polarity">The polarity.</param> public void SetPolarity(Mcp23017Pin pin, Mcp23017PinPolarity polarity) { var register = ((int)pin & 0x0100) == 0x0000 ? Register.IPOLA : Register.IPOLB; connection.WriteByte((byte)register); var polarities = connection.ReadByte(); var bit = (byte)((int)pin & 0xFF); var newPolarities = (polarity == Mcp23017PinPolarity.Inverted) ? polarities | bit : polarities & ~bit; connection.Write(new[] { (byte)register, (byte)newPolarities }); }
/// <summary> /// Sets the resistor. /// </summary> /// <param name="pin">The pin.</param> /// <param name="resistor">The resistor.</param> public void SetResistor(Mcp23017Pin pin, Mcp23017PinResistor resistor) { var register = ((int) pin & 0x0100) == 0x0000 ? Register.GPPUA : Register.GPPUB; connection.WriteByte((byte) register); var resistors = connection.ReadByte(); var bit = (byte) ((int) pin & 0xFF); var newResistors = (resistor == Mcp23017PinResistor.PullUp) ? resistors | bit : resistors & ~bit; connection.Write(new[] {(byte) register, (byte) newResistors}); }
/// <summary> /// Sets the pin status. /// </summary> /// <param name="pin">The pin.</param> /// <param name="enabled">if set to <c>true</c>, pin is enabled.</param> public void SetPinStatus(Mcp23017Pin pin, bool enabled) { var register = ((int)pin & 0x0100) == 0x0000 ? Register.GPIOA : Register.GPIOB; connection.WriteByte((byte)register); var status = connection.ReadByte(); var bit = (byte)((int)pin & 0xFF); var newStatus = enabled ? status | bit : status & ~bit; connection.Write((byte)register, (byte)newStatus); }
/// <summary> /// Sets the direction. /// </summary> /// <param name="pin">The pin.</param> /// <param name="direction">The direction.</param> public void SetDirection(Mcp23017Pin pin, Mcp23017PinDirection direction) { var register = ((int)pin & 0x0100) == 0x0000 ? Register.IODIRA : Register.IODIRB; connection.WriteByte((byte)register); var directions = connection.ReadByte(); var bit = (byte)((int)pin & 0xFF); var newDirections = (direction == Mcp23017PinDirection.Input) ? directions | bit : directions & ~bit; connection.Write(new[] { (byte)register, (byte)newDirections }); }
/// <summary> /// Toogles the specified pin. /// </summary> /// <param name="pin">The pin.</param> public void Toogle(Mcp23017Pin pin) { var register = ((int)pin & 0x0100) == 0x0000 ? Register.GPIOA : Register.GPIOB; connection.WriteByte((byte)register); var status = connection.ReadByte(); var bit = (byte)((int)pin & 0xFF); var bitEnabled = (status & bit) != 0x00; var newBitEnabled = !bitEnabled; var newStatus = newBitEnabled ? status | bit : status & ~bit; connection.Write((byte)register, (byte)newStatus); }
private static Hd44780Configuration LoadMcp23017Configuration(IEnumerable <string> args) { var addressText = args.SkipWhile(s => !String.Equals(s, "mcp23017", StringComparison.InvariantCultureIgnoreCase)).Skip(1).DefaultIfEmpty("0x20").First(); var address = addressText.StartsWith("0x", StringComparison.InvariantCultureIgnoreCase) ? Int32.Parse(addressText.Substring(2), NumberStyles.HexNumber) : Int32.Parse(addressText); const Mcp23017Pin registerSelectPin = Mcp23017Pin.B7; const Mcp23017Pin clockPin = Mcp23017Pin.B5; var dataPins = new[] { Mcp23017Pin.B1, Mcp23017Pin.B2, Mcp23017Pin.B3, Mcp23017Pin.B4 }; Console.WriteLine(); Console.WriteLine("Using I2C connection over MCP23017 Expander"); Console.WriteLine("\tRegister Select: {0}", registerSelectPin); Console.WriteLine("\tClock: {0}", clockPin); Console.WriteLine("\tData 1: {0}", dataPins[0]); Console.WriteLine("\tData 2: {0}", dataPins[1]); Console.WriteLine("\tData 3: {0}", dataPins[2]); Console.WriteLine("\tData 4: {0}", dataPins[3]); Console.WriteLine("\tBacklight: VCC"); Console.WriteLine("\tRead/write: GND"); Console.WriteLine(); const ConnectorPin sdaPin = ConnectorPin.P1Pin03; const ConnectorPin sclPin = ConnectorPin.P1Pin05; var driver = new I2cDriver(sdaPin.ToProcessor(), sclPin.ToProcessor()) { ClockDivider = 512 }; var connection = new Mcp23017I2cConnection(driver.Connect(address)); return(new Hd44780Configuration(driver) { Pins = new Hd44780Pins( connection.Out(registerSelectPin), connection.Out(clockPin), dataPins.Select(pin => (IOutputBinaryPin)connection.Out(pin))) }); }
private static Hd44780Configuration LoadI2cConfiguration() { const Mcp23017Pin registerSelectPin = Mcp23017Pin.B0; const Mcp23017Pin clockPin = Mcp23017Pin.B1; var dataPins = new[] { Mcp23017Pin.B2, Mcp23017Pin.B3, Mcp23017Pin.B4, Mcp23017Pin.B5 }; Console.WriteLine(); Console.WriteLine("Using I2C connection"); Console.WriteLine("\tRegister Select: {0}", registerSelectPin); Console.WriteLine("\tClock: {0}", clockPin); Console.WriteLine("\tData 1: {0}", dataPins[0]); Console.WriteLine("\tData 2: {0}", dataPins[1]); Console.WriteLine("\tData 3: {0}", dataPins[2]); Console.WriteLine("\tData 4: {0}", dataPins[3]); Console.WriteLine(); const ConnectorPin sdaPin = ConnectorPin.P1Pin03; const ConnectorPin sclPin = ConnectorPin.P1Pin05; var driver = new I2cDriver(sdaPin.ToProcessor(), sclPin.ToProcessor()); driver.ClockDivider = 2048; var connection = new Mcp23017I2cConnection(driver.Connect(0x20)); return(new Hd44780Configuration(driver) { RegisterSelect = connection.Out(registerSelectPin), Clock = connection.Out(clockPin), Data = dataPins.Select(pin => connection.Out(pin)) }); }
public static void TurnOnGreenLed() { const ConnectorPin sdaPin = ConnectorPin.P1Pin03; const ConnectorPin sclPin = ConnectorPin.P1Pin05; const Mcp23017Pin ledGreen = Mcp23017Pin.B0; using (var driver = new I2cDriver(sdaPin.ToProcessor(), sclPin.ToProcessor())) { var deviceConnection = new Mcp23017I2cConnection(driver.Connect(0x20)); Console.WriteLine("Connected"); deviceConnection.SetDirection(ledGreen, Mcp23017PinDirection.Output); // green light off deviceConnection.SetPinStatus(ledGreen, true); System.Threading.Thread.Sleep(1000); // wait a sec deviceConnection.SetPinStatus(ledGreen, false); } }
/// <summary> /// Creates an output binary pin. /// </summary> /// <param name="connection">The connection.</param> /// <param name="pin">The pin.</param> /// <param name="resistor">The resistor.</param> /// <param name="polarity">The polarity.</param> /// <returns>The pin.</returns> public static Mcp23017OutputBinaryPin Out(this Mcp23017I2cConnection connection, Mcp23017Pin pin, Mcp23017PinResistor resistor = Mcp23017PinResistor.None, Mcp23017PinPolarity polarity = Mcp23017PinPolarity.Normal) { return(new Mcp23017OutputBinaryPin(connection, pin, resistor, polarity)); }
/// <summary> /// Creates an input binary pin. /// </summary> /// <param name="connection">The connection.</param> /// <param name="pin">The pin.</param> /// <param name="resistor">The resistor.</param> /// <param name="polarity">The polarity.</param> /// <returns>The pin.</returns> public static Mcp23017InputBinaryPin In(this Mcp23017I2cConnection connection, Mcp23017Pin pin, Mcp23017PinResistor resistor = Mcp23017PinResistor.None, Mcp23017PinPolarity polarity = Mcp23017PinPolarity.Normal) { return new Mcp23017InputBinaryPin(connection, pin, resistor, polarity); }
/// <summary> /// Creates an input binary pin. /// </summary> /// <param name="connection">The connection.</param> /// <param name="pin">The pin.</param> /// <param name="resistor">The resistor.</param> /// <param name="polarity">The polarity.</param> /// <returns>The input pin.</returns> public static Mcp23017InputBinaryPin In(this Mcp23017Device connection, Mcp23017Pin pin, Mcp23017PinResistor resistor = Mcp23017PinResistor.None, Mcp23017PinPolarity polarity = Mcp23017PinPolarity.Normal) { return(new Mcp23017InputBinaryPin(connection, pin, resistor, polarity)); }
public static Mcp23017OutputPin Out(this Mcp23017I2cConnection connection, Mcp23017Pin pin) { return new Mcp23017OutputPin(connection, pin); }
public void Toogle(Mcp23017Pin pin) { var register = ((int)pin & 0x0100) == 0x0000 ? Register.GPIOA : Register.GPIOB; connection.WriteByte((byte)register); var status = connection.ReadByte(); var bit = (byte)((int)pin & 0xFF); var bitEnabled = (status & bit) != 0x00; var newBitEnabled = !bitEnabled; var newStatus = newBitEnabled ? status | bit : status & ~bit; connection.Write((byte)register, (byte)newStatus); }
public static Mcp23017OutputPin Out(this Mcp23017I2cConnection connection, Mcp23017Pin pin) { return(new Mcp23017OutputPin(connection, pin)); }