public static void Run(string[] args) { Console.WriteLine("Nusbio Initializing"); var serialNumber = Nusbio.Detect(); if (serialNumber == null) // Detect the first Nusbio available { Console.WriteLine("Nusbio not detected"); return; } var clockPin = NusbioGpio.Gpio0; var dataOutPin = NusbioGpio.Gpio1; byte MCP23008EP_ADDR = 0x20; using (var nusbio = new Nusbio(serialNumber)) { // Add 8 new gpios named Gpio9 to Gpio16 _mcp = new MCP23008(nusbio, dataOutPin, clockPin, gpioStartIndex:9); _mcp.Begin(MCP23008EP_ADDR); _mcp.SetPinMode(NusbioGpioEx.Gpio9, PinMode.Output); _mcp.SetPinMode(NusbioGpioEx.Gpio10, PinMode.Output); _mcp.SetPinMode(NusbioGpioEx.Gpio11, PinMode.Output); _mcp.SetPinMode(NusbioGpioEx.Gpio12, PinMode.Output); _mcp.SetPinMode(NusbioGpioEx.Gpio13, PinMode.Output); _mcp.SetPinMode(NusbioGpioEx.Gpio14, PinMode.Input); _mcp.SetPinMode(NusbioGpioEx.Gpio15, PinMode.Input ); _mcp.SetPinMode(NusbioGpioEx.Gpio16, PinMode.Input ); Cls(nusbio); while (nusbio.Loop()) { _mcp.GPIOS[NusbioGpioEx.Gpio9].DigitalWrite(PinState.High); _mcp.GPIOS[NusbioGpioEx.Gpio10].DigitalWrite(PinState.High); TimePeriod.Sleep(200); _mcp.GPIOS[NusbioGpioEx.Gpio9].DigitalWrite(PinState.Low); _mcp.GPIOS[NusbioGpioEx.Gpio10].DigitalWrite(PinState.Low); TimePeriod.Sleep(200); ConsoleEx.Write(0, 4, string.Format("[{0}] Input14 detected:{1},{2} ", DateTime.Now, _mcp.GPIOS[NusbioGpioEx.Gpio14].DigitalRead(), _mcp.DigitalRead(14) ), ConsoleColor.Cyan); ConsoleEx.Write(0, 5, string.Format("[{0}] Input15 detected:{1},{2} ", DateTime.Now, _mcp.GPIOS[NusbioGpioEx.Gpio15].DigitalRead(), _mcp.DigitalRead(15) ), ConsoleColor.Cyan); ConsoleEx.Write(0, 6, string.Format("[{0}] Input16 detected:{1},{2} ", DateTime.Now, _mcp.GPIOS[NusbioGpioEx.Gpio16].DigitalRead(), _mcp.DigitalRead(16) ), ConsoleColor.Cyan); if (Console.KeyAvailable) { var k = Console.ReadKey(true).Key; if (k == ConsoleKey.Q) break; if (k == ConsoleKey.C) Cls(nusbio); } } } Console.Clear(); }
public static void Run(string[] args) { Console.WriteLine("Nusbio initialization"); var serialNumber = Nusbio.Detect(); if (serialNumber == null) // Detect the first Nusbio available { Console.WriteLine("nusbio not detected"); return; } var sclPin = NusbioGpio.Gpio0; // White var sdaPin = NusbioGpio.Gpio1; // Green byte EEPROM_I2C_ADDR = 0x50; // Microship 24LC256 = 32k byte MCP23008_I2C_ADDR = 0x20; // Microship MCP 23008 = 8 gpios using (var nusbio = new Nusbio(serialNumber)) // , { _eeprom = new EEPROM_24LC256(nusbio, sdaPin, sclPin); _eeprom.Begin(EEPROM_I2C_ADDR); _mcp = new MCP23008(nusbio, sdaPin, sclPin, gpioStartIndex:9); _mcp.Begin(MCP23008_I2C_ADDR); Cls(nusbio); var standardsGpios = new List<NusbioGpio>() { NusbioGpio.Gpio2, NusbioGpio.Gpio3, NusbioGpio.Gpio4, NusbioGpio.Gpio5, NusbioGpio.Gpio6, NusbioGpio.Gpio7 }; var extendedGpios = new List<string>() { NusbioGpioEx.Gpio9 , NusbioGpioEx.Gpio10, NusbioGpioEx.Gpio11, NusbioGpioEx.Gpio12, NusbioGpioEx.Gpio13, NusbioGpioEx.Gpio14, NusbioGpioEx.Gpio15, NusbioGpioEx.Gpio16 }; var g = NusbioGpioEx.Gpio16; _mcp.SetPinMode(g, PinMode.Input); while(nusbio.Loop()) { //if (_mcp.GPIOS[g].DigitalRead() == PinState.High) //{ // ConsoleEx.Write(0, 10, string.Format("[{0}] Button Down", DateTime.Now), ConsoleColor.Cyan); //} //else //{ // ConsoleEx.Write(0, 10, string.Format("[{0}] Button Up ", DateTime.Now), ConsoleColor.Cyan); //} foreach (var eg in extendedGpios) { _mcp.GPIOS[eg].State = !_mcp.GPIOS[eg].State; _mcp.GPIOS[eg].DigitalWrite(_mcp.GPIOS[eg].State); } foreach (var sg in standardsGpios) { nusbio.GPIOS[sg].State = !nusbio.GPIOS[sg].State; nusbio.GPIOS[sg].DigitalWrite(nusbio.GPIOS[sg].State); } TimePeriod.Sleep(300); if (Console.KeyAvailable) { var k = Console.ReadKey(true).Key; if (k == ConsoleKey.D0) { ReadEEPromPerPage(10, nusbio); Cls(nusbio); } if (k == ConsoleKey.A) { ReadEEPromPerPage(512, nusbio); Cls(nusbio); } if (k == ConsoleKey.Q) { _mcp.AllOff(); break; } } } } Console.Clear(); }
public static void Run(string[] args) { Console.WriteLine("Nusbio initialization"); var serialNumber = Nusbio.Detect(); if (serialNumber == null) // Detect the first Nusbio available { Console.WriteLine("nusbio not detected"); return; } var sclPin = NusbioGpio.Gpio0; // White var sdaPin = NusbioGpio.Gpio1; // Green byte MCP23008_I2C_ADDR = 0x20; // Microship MCP 23008 = 8 gpios // Gpio 0 and 1 are reserved for I2C Bus var standardOutputGpios = new List <NusbioGpio>() { NusbioGpio.Gpio2, NusbioGpio.Gpio3, NusbioGpio.Gpio4, NusbioGpio.Gpio5, NusbioGpio.Gpio6, NusbioGpio.Gpio7 }; var extendedOutputGpios = new List <string>() { NusbioGpioEx.Gpio8, NusbioGpioEx.Gpio9, NusbioGpioEx.Gpio10, NusbioGpioEx.Gpio11, NusbioGpioEx.Gpio12, NusbioGpioEx.Gpio13, NusbioGpioEx.Gpio14, #if !GPIO_15_AS_INPUT NusbioGpioEx.Gpio15, // Configured as input #endif }; using (var nusbio = new Nusbio(serialNumber)) // , { _mcp = new MCP23008(nusbio, sdaPin, sclPin); _mcp.Begin(MCP23008_I2C_ADDR); Cls(nusbio); #if GPIO_15_AS_INPUT var inputGpio = NusbioGpioEx.Gpio15; _mcp.SetPinMode(inputGpio, PinMode.InputPullUp); #endif while (nusbio.Loop()) { #if GPIO_15_AS_INPUT if (_mcp.GPIOS[inputGpio].DigitalRead() == PinState.High) { ConsoleEx.Write(0, 2, string.Format("[{0}] Button Down", DateTime.Now), ConsoleColor.Cyan); } else { ConsoleEx.Write(0, 2, string.Format("[{0}] Button Up ", DateTime.Now), ConsoleColor.Cyan); } #endif foreach (var eg in extendedOutputGpios) { _mcp.GPIOS[eg].State = !_mcp.GPIOS[eg].State; _mcp.GPIOS[eg].DigitalWrite(_mcp.GPIOS[eg].State); } //foreach (var sg in standardOutputGpios) //{ // nusbio.GPIOS[sg].State = !nusbio.GPIOS[sg].State; // nusbio.GPIOS[sg].DigitalWrite(nusbio.GPIOS[sg].State); //} TimePeriod.Sleep(500); if (Console.KeyAvailable) { var k = Console.ReadKey(true).Key; if (k == ConsoleKey.A) { Cls(nusbio); } if (k == ConsoleKey.Q) { _mcp.AllOff(); break; } } } } Console.Clear(); }