Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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();
        }