/// <summary> /// Initializes a new instance of the <see cref="Mcp23008InputBinaryPin"/> 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 Mcp23008InputBinaryPin(Mcp23008I2cConnection connection, Mcp23008Pin pin, Mcp23008PinResistor resistor = Mcp23008PinResistor.None, Mcp23008PinPolarity polarity = Mcp23008PinPolarity.Normal) { this.connection = connection; this.pin = pin; connection.SetDirection(pin, Mcp23008PinDirection.Input); connection.SetResistor(pin, resistor); connection.SetPolarity(pin, polarity); }
private static Hd44780Configuration LoadMcp23008Configuration(IEnumerable <string> args) { var addressText = args.SkipWhile(s => !String.Equals(s, "mcp23008", 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 Mcp23008Pin registerSelectPin = Mcp23008Pin.Pin1; const Mcp23008Pin clockPin = Mcp23008Pin.Pin2; const Mcp23008Pin backlightPin = Mcp23008Pin.Pin7; var dataPins = new[] { Mcp23008Pin.Pin3, Mcp23008Pin.Pin4, Mcp23008Pin.Pin5, Mcp23008Pin.Pin6 }; Console.WriteLine(); Console.WriteLine("Using I2C connection over MCP23008 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: {0}", backlightPin); 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 Mcp23008I2cConnection(driver.Connect(address)); var retVal = new Hd44780Configuration(driver) { Pins = new Hd44780Pins( connection.Out(registerSelectPin), connection.Out(clockPin), dataPins.Select(pin => (IOutputBinaryPin)connection.Out(pin))) }; retVal.Pins.Backlight = connection.Out(backlightPin); return(retVal); }
static void Main() { const ConnectorPin sdaPin = ConnectorPin.P1Pin03; const ConnectorPin sclPin = ConnectorPin.P1Pin05; Console.WriteLine("MCP-23008 Sample: Switch LED on Pin0 pin"); Console.WriteLine(); Console.WriteLine("\tSDA: {0}", sdaPin); Console.WriteLine("\tSCL: {0}", sclPin); Console.WriteLine(); using (var driver = new I2cDriver(sdaPin.ToProcessor(), sclPin.ToProcessor())) { var deviceConnection = new Mcp23008I2cConnection(driver.Connect(0x20)); deviceConnection.SetDirection(Mcp23008Pin.Pin0, Mcp23008PinDirection.Output); while (!Console.KeyAvailable) { deviceConnection.Toogle(Mcp23008Pin.Pin0); Thread.Sleep(1000); } } }
/// <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 Mcp23008InputBinaryPin In(this Mcp23008I2cConnection connection, Mcp23008Pin pin, Mcp23008PinResistor resistor = Mcp23008PinResistor.None, Mcp23008PinPolarity polarity = Mcp23008PinPolarity.Normal) { return(new Mcp23008InputBinaryPin(connection, pin, resistor, polarity)); }
private static Hd44780Configuration LoadMcp23008Configuration(IEnumerable<string> args) { var addressText = args.SkipWhile(s => !String.Equals(s, "mcp23008", 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 Mcp23008Pin registerSelectPin = Mcp23008Pin.Pin1; const Mcp23008Pin clockPin = Mcp23008Pin.Pin2; const Mcp23008Pin backlightPin = Mcp23008Pin.Pin7; var dataPins = new[] { Mcp23008Pin.Pin3, Mcp23008Pin.Pin4, Mcp23008Pin.Pin5, Mcp23008Pin.Pin6 }; Console.WriteLine(); Console.WriteLine("Using I2C connection over MCP23008 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: {0}", backlightPin); 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 Mcp23008I2cConnection(driver.Connect(address)); var retVal = new Hd44780Configuration(driver) { Pins = new Hd44780Pins( connection.Out(registerSelectPin), connection.Out(clockPin), dataPins.Select(pin => (IOutputBinaryPin)connection.Out(pin))) }; retVal.Pins.Backlight = connection.Out(backlightPin); return retVal; }