Exemplo n.º 1
0
        public int Add(object obj)
        {
            AnalogSensor anaSensor = (AnalogSensor)obj;

            MySqlParameter[] parms = new MySqlParameter[] {
                new MySqlParameter("@name", anaSensor.Name),
                new MySqlParameter("@address", anaSensor.Address.ToString()),
                new MySqlParameter("@description", anaSensor.Description),
                new MySqlParameter("@interval", anaSensor.Interval),
                new MySqlParameter("@format", anaSensor.Format),

                new MySqlParameter("@md", anaSensor.Md),
                new MySqlParameter("@mu", anaSensor.Mu),
                new MySqlParameter("@ut", anaSensor.Ut),

                new MySqlParameter("@h4l", anaSensor.H4l),
                new MySqlParameter("@h3l", anaSensor.H3l),
                new MySqlParameter("@h2l", anaSensor.H2l),
                new MySqlParameter("@h1l", anaSensor.H1l),

                new MySqlParameter("@l1l", anaSensor.L1l),
                new MySqlParameter("@l2l", anaSensor.L2l),
                new MySqlParameter("@l3l", anaSensor.L3l),
                new MySqlParameter("@l4l", anaSensor.L4l)
            };

            string cmdText = "insert into analogSensor (name,address,description,aInterval,aFormat,aMd,aMu,ut,h4l,h3l,h2l,h1l,l1l,l2l,l3l,l4l)" +
                             " values (@name,@address,@description,@interval,@format,@md,@mu,@ut,@h4l,@h3l,@h2l,@h1l,@l1l,@l2l,@l3l,@l4l);";

            return(base.MySqlHelper.ExecuteNonQuery(cmdText, parms));
        }
Exemplo n.º 2
0
        public void TestAnaSensorBLL()
        {
            AnaSensorBLL bll = new AnaSensorBLL(new AnaSensorDAL());

            AnalogSensor anaSensor = new AnalogSensor();

            anaSensor.Address = new SensorAddress("userA.stationA.moduleA.7");
            anaSensor.Name    = "U2CSP020AM";
            anaSensor.Md      = 0;
            anaSensor.Mu      = 110;
            anaSensor.Ut      = "MPa";
            anaSensor.Format  = "8.2";
            bll.Add(anaSensor);

            AnalogSensor anaSensorB = new AnalogSensor();

            anaSensorB.Name = "U2CSP008AM";
            bll.Delete(anaSensorB);

            AnalogSensor anaSensorOld = new AnalogSensor();

            anaSensorOld.Name = "U2CSP001AM";
            AnalogSensor anaSensorNew = new AnalogSensor();

            anaSensorNew.Name    = "U2CSP001AM";
            anaSensorNew.Address = new SensorAddress("aa.bb");
            anaSensorNew.Mu      = 15;
            bll.Modify(anaSensorOld, anaSensorNew);

            AnalogSensor analogSensorC = (AnalogSensor)bll.GetObjById("U2CSP001AM");

            List <object> list1 = bll.GetAllObjs();

            List <object> list2 = bll.GetObjsBySQL("select * from analogSensor where name = 'U2CSP001AM'", null);
        }
Exemplo n.º 3
0
        private async void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            // Start GPIO
            var gpioController = GpioController.GetDefault();

            // Create ADC manager
            var adcManager = new AdcProviderManager();

            // Add ADC chips
            adcManager.Providers.Add(
                new ADC0832()
            {
                ChipSelectPin = gpioController.OpenPin(18),
                ClockPin      = gpioController.OpenPin(23),
                DataPin       = gpioController.OpenPin(24),
            });


            // Get the well-known controller collection back
            var adcControllers = await adcManager.GetControllersAsync();

            // Create light sensor
            var lightSensor = new AnalogSensor()
            {
                AdcChannel     = adcControllers[0].OpenChannel(0),
                ReportInterval = 250,
            };

            // Subscribe to events
            lightSensor.ReadingChanged += LightSensor_ReadingChanged;
        }
Exemplo n.º 4
0
    static void Main()
    {
        var lowPort  = new OutputPort(Parameters.LowPin, false);
        var highPort = new OutputPort(Parameters.HighPin, true);

        var voltageSensor = new AnalogSensor
        {
            InputPin = Parameters.AnalogPin,
            MinValue = 0.0,
            MaxValue = 3.3
        };

        var webServer = new HttpServer
        {
            RelayDomain    = Parameters.RelayDomain,
            RelaySecretKey = Parameters.RelaySecretKey,
            RequestRouting =
            {
                {
                    "GET /voltage/actual",
                    new MeasuredVariable
                    {
                        FromSensor = voltageSensor.HandleGet
                    }.HandleRequest
                }
            }
        };

        webServer.Run();
    }
Exemplo n.º 5
0
 public Form1()
 {
     InitializeComponent();
     tempSensor = new AnalogSensor(1, 0, 40);
     opc        = new OPC(@"\\localhost\ProcessData\Temperature\Configured Aliases\Temperature");
     timer1.Start();
 }
Exemplo n.º 6
0
        private async void MainPageLoaded(object sender, RoutedEventArgs e)
        {
            //Initialize objects
            gpioController = GpioController.GetDefault();
            IAdcControllerProvider MCP3008_SPI0 = new McpClassAdc();

            adcManager = new AdcProviderManager();
            lightVals  = new List <double>();
            //Insert 10 dummy values to initialize.
            for (int i = 0; i < 30; i++)
            {
                lightVals.Add(0);
            }

            tempVals = new List <double>();
            for (int i = 0; i < 30; i++)
            {
                tempVals.Add(0);
            }
            //Initialize MCP3008 device.
            //Remember, 8 channels, 10 bit resolution
            //We wired up to SPI0 of pi with Chip select 0.
            ((McpClassAdc)MCP3008_SPI0).ChannelCount     = 8;
            ((McpClassAdc)MCP3008_SPI0).ChannelMode      = ProviderAdcChannelMode.SingleEnded;
            ((McpClassAdc)MCP3008_SPI0).ChipSelectLine   = 0;
            ((McpClassAdc)MCP3008_SPI0).ControllerName   = "SPI0";
            ((McpClassAdc)MCP3008_SPI0).ResolutionInBits = 10;
            #region ADC Provider Stuff
            //Add ADC Provider to list of providers
            adcManager.Providers.Add(MCP3008_SPI0);
            //Get all ADC Controllers.
            var adcControllers = await adcManager.GetControllersAsync();

            //This is just how its done.
            #endregion ADC Provider Stuff
            var lightSensor = new AnalogSensor()
            {
                //Notice access via controller index.
                //You will need to keep tabs on your
                //ADC providers locations in the list
                //Channel 7 as this is where we wired the photo resistor to.
                AdcChannel = adcControllers[0].OpenChannel(7),
                //every 500 milliseconds, grab read the value.
                ReportInterval = 250
            };
            //Attach a function to the event we fire every 500 milliseconds.
            lightSensor.ReadingChanged += LightSensor_ReadingChanged;

            #region Temp Sensor Cheat Codes
            var tempSensor = new AnalogSensor()
            {
                AdcChannel     = adcControllers[0].OpenChannel(6),
                ReportInterval = 250
            };
            tempSensor.ReadingChanged += TempSensor_ReadingChanged;
            #endregion Temp Sensor Cheat Codes
        }
Exemplo n.º 7
0
        private async void MainPageLoaded(object sender, RoutedEventArgs e)
        {
            //Initialize objects
            gpioController = GpioController.GetDefault();
            IAdcControllerProvider MCP3008_SPI0 = new MCP3008();

            adcManager   = new AdcProviderManager();
            lightVals    = new List <double>();
            deviceClient = DeviceClient
                           .CreateFromConnectionString(IoTHubConnString,
                                                       TransportType.Http1);
            timer          = new DispatcherTimer();
            timer.Interval = TimeSpan.FromMilliseconds(500);
            timer.Tick    += BroadcastTelemetry;
            timer.Start();
            //Insert 10 dummy values to initialize.
            for (int i = 0; i < 30; i++)
            {
                lightVals.Add(0);
            }

            tempVals = new List <double>();
            for (int i = 0; i < 30; i++)
            {
                tempVals.Add(0);
            }
            #region ADC Provider Stuff
            //Add ADC Provider to list of providers
            adcManager.Providers.Add(MCP3008_SPI0);
            //Get all ADC Controllers.
            var adcControllers = await adcManager.GetControllersAsync();

            //This is just how its done.
            #endregion ADC Provider Stuff
            var lightSensor = new AnalogSensor()
            {
                //Notice access via controller index.
                //You will need to keep tabs on your
                //ADC providers locations in the list
                //Channel 7 as this is where we wired the photo resistor to.
                AdcChannel = adcControllers[0].OpenChannel(7),
                //every 500 milliseconds, grab read the value.
                ReportInterval = 250
            };
            //Attach a function to the event we fire every 500 milliseconds.
            lightSensor.ReadingChanged += LightSensor_ReadingChanged;

            #region Temp Sensor Cheat Codes
            var tempSensor = new AnalogSensor()
            {
                AdcChannel     = adcControllers[0].OpenChannel(6),
                ReportInterval = 250
            };
            tempSensor.ReadingChanged += TempSensor_ReadingChanged;
            #endregion Temp Sensor Cheat Codes
        }
Exemplo n.º 8
0
        public int Delete(object obj)
        {
            AnalogSensor sensor = (AnalogSensor)obj;

            MySqlParameter[] parms = new MySqlParameter[] {
                new MySqlParameter("@name", sensor.Name)
            };

            string cmdText = "delete from userInfo where name=@name";

            return(base.MySqlHelper.ExecuteNonQuery(cmdText, parms));
        }
Exemplo n.º 9
0
        private void Run()
        {
            _peach = new Peach();
            _peach.Button.ButtonPressed += Button_ButtonPressed;

            _sensor = new AnalogSensor(Cpu.AnalogChannel.ANALOG_0);
            _sensor.MeasurementComplete += _sensor_MeasurementComplete;
            _sensor.Interval             = 1000;

            _testTimer = new Timer(PollingMeasure, null, new TimeSpan(0, 0, 1), new TimeSpan(0, 0, 1));

            while (true)
            {
            }
        }
Exemplo n.º 10
0
        private void StartAnalog()
        {
            // Analog sensor is on controller 1 for this sample
            var controller = adcControllers[0];

            // Create analog sensor
            var analogSensor = new AnalogSensor()
            {
                AdcChannel     = controller.OpenChannel(0),
                ReportInterval = 1000, // This demo doesn't need fast reports and it helps with responsiveness
            };

            // Subscribe to events
            analogSensor.ReadingChanged += AnalogSensor_ReadingChanged;
        }
Exemplo n.º 11
0
    public static void Main()
    {
        var thdLed = new Thread(HandleLed);

        thdLed.Start();

        var digitalSensor = new DigitalSensor {
            InputPin = Pins.GPIO_PIN_D12
        };
        var analogSensor = new AnalogSensor {
            InputPin = Pins.GPIO_PIN_A1, MinValue = 0.0, MaxValue = 3.3
        };
        var lowPort  = new OutputPort(Pins.GPIO_PIN_A0, false);
        var highPort = new OutputPort(Pins.GPIO_PIN_A2, true);

        var ledActuator = new DigitalActuator {
            OutputPin = Pins.GPIO_PIN_D13
        };
        //need to create HTTP PUTs!

        var webServer = new HttpServer
        {
            RelayDomain    = "gsiot-bcjp-yj88",
            RelaySecretKey = "HDMvyM11hAu6H6cxIaT50dL9ALWc81MYB8H/UFhV",
            RequestRouting =
            {
                { "GET /hello*", HandleHello   }, //This accepts a lot of URLs
                { "GET /on",     HandleOn      },
                { "GET /off",    HandleOff     },
                { "POST /on",    HandlePostOn  },
                { "POST /off",   HandlePostOff },
                { "GET /d12",    new MeasuredVariable {
                      FromSensor = digitalSensor.HandleGet
                  }.HandleRequest },
                { "GET /a1",     new MeasuredVariable {
                      FromSensor = analogSensor.HandleGet
                  }.HandleRequest },
                { "PUT /d13",    new ManipulatedVariable {
                      FromHttpRequest = CSharpRepresentation.TryDeserializeBool, ToActuator = ledActuator.HandlePut
                  }.HandleRequest },
            }
        };

        webServer.Run();
    }
Exemplo n.º 12
0
        public int Modify(object oldObj, object newObj)
        {
            try
            {
                AnalogSensor oldSensor = (AnalogSensor)oldObj;
                AnalogSensor newSensor = (AnalogSensor)newObj;

                MySqlParameter[] parms = new MySqlParameter[] {
                    new MySqlParameter("@name", oldSensor.Name),

                    new MySqlParameter("@address", newSensor.Address.ToString()),
                    new MySqlParameter("@description", newSensor.Description),
                    new MySqlParameter("@interval", newSensor.Interval),

                    new MySqlParameter("@format", newSensor.Format),

                    new MySqlParameter("@md", newSensor.Md),
                    new MySqlParameter("@mu", newSensor.Mu),

                    new MySqlParameter("@ut", newSensor.Ut),

                    new MySqlParameter("@H4l", newSensor.H4l),
                    new MySqlParameter("@H3l", newSensor.H3l),
                    new MySqlParameter("@H2l", newSensor.H2l),
                    new MySqlParameter("@H1l", newSensor.H1l),

                    new MySqlParameter("@L1l", newSensor.L1l),
                    new MySqlParameter("@L2l", newSensor.L2l),
                    new MySqlParameter("@L3l", newSensor.L3l),
                    new MySqlParameter("@L4l", newSensor.L4l)
                };

                string cmdText = "update analogSensor set address=@address,description=@description,aInterval=@interval" +
                                 ",aFormat=@format,aMd=@md,aMu=@mu,ut=@ut,h4l=@H4l,h3l=@H3l,h2l=@H2l,h1l=@H1l," +
                                 "l1l=@L1l,l2l=@L2l,l3l=@L3l,l4l=@L4l where name = @name;";

                return(this.MySqlHelper.ExecuteNonQuery(cmdText, parms));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemplo n.º 13
0
        public List <object> GetAllObjs()
        {
            List <object> objs = new List <object>();

            string cmdText = "select * from analogSensor";

            MySqlParameter[] parms = new MySqlParameter[] { };

            MySqlDataReader reader = this.MySqlHelper.ExecuteReader(cmdText, parms);

            while (reader.Read())
            {
                AnalogSensor sensor = new AnalogSensor();
                sensor.Name        = reader[0].ToString().Trim();
                sensor.Address     = new SensorAddress(reader[1].ToString().Trim());
                sensor.Description = reader[2].ToString().Trim();

                sensor.Interval = int.Parse(reader[3].ToString().Trim());
                sensor.Format   = reader[4].ToString().Trim();

                sensor.Md = double.Parse(reader[5].ToString().Trim());
                sensor.Mu = double.Parse(reader[6].ToString().Trim());
                sensor.Ut = reader[7].ToString().Trim();

                sensor.H4l = double.Parse(reader[8].ToString().Trim());
                sensor.H3l = double.Parse(reader[9].ToString().Trim());
                sensor.H2l = double.Parse(reader[10].ToString().Trim());
                sensor.H1l = double.Parse(reader[11].ToString().Trim());

                sensor.L1l = double.Parse(reader[12].ToString().Trim());
                sensor.L2l = double.Parse(reader[13].ToString().Trim());
                sensor.L3l = double.Parse(reader[14].ToString().Trim());
                sensor.L4l = double.Parse(reader[15].ToString().Trim());

                objs.Add(sensor);
            }
            this.mySqlHelper.CloseConn();

            return(objs);
        }
Exemplo n.º 14
0
        public object GetObjById(string id)
        {
            AnalogSensor anaSensor = new AnalogSensor();

            string cmdText = "select * from analogSensor where name=@id";

            MySqlParameter[] parms = new MySqlParameter[] { new MySqlParameter("@id", id) };

            MySqlDataReader reader = this.MySqlHelper.ExecuteReader(cmdText, parms);

            while (reader.Read())
            {
                anaSensor.Name        = reader[0].ToString().Trim();
                anaSensor.Address     = new SensorAddress(reader[1].ToString().Trim());
                anaSensor.Description = reader[2].ToString();
                anaSensor.Interval    = int.Parse(reader[3].ToString().Trim());

                anaSensor.Format = reader[4].ToString().Trim();

                anaSensor.Md = double.Parse(reader[5].ToString().Trim());
                anaSensor.Mu = double.Parse(reader[6].ToString().Trim());

                anaSensor.Ut = reader[7].ToString().Trim();

                anaSensor.H4l = double.Parse(reader[8].ToString().Trim());
                anaSensor.H3l = double.Parse(reader[9].ToString().Trim());
                anaSensor.H2l = double.Parse(reader[10].ToString().Trim());
                anaSensor.H1l = double.Parse(reader[11].ToString().Trim());

                anaSensor.L1l = double.Parse(reader[12].ToString().Trim());
                anaSensor.L2l = double.Parse(reader[13].ToString().Trim());
                anaSensor.L3l = double.Parse(reader[14].ToString().Trim());
                anaSensor.L4l = double.Parse(reader[15].ToString().Trim());
            }
            this.mySqlHelper.CloseConn();
            return(anaSensor);
        }
Exemplo n.º 15
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 lightSensorAnalogPort  = 2;
            var motionSensorAnalogPort = 0;
            var buttonSensorAnalogPort = 1;
            var ledGpio = NusbioGpio.Gpio5;

            using (var nusbio = new Nusbio(serialNumber))
            {
                Cls(nusbio);

                var halfSeconds = new TimeOut(333);

                // Mcp300X Analog To Digital - SPI Config
                ad = new MCP3008(nusbio,
                                 selectGpio: NusbioGpio.Gpio3,
                                 mosiGpio:   NusbioGpio.Gpio1,
                                 misoGpio:   NusbioGpio.Gpio2,
                                 clockGpio:  NusbioGpio.Gpio0);
                ad.Begin();

                var analogMotionSensor = new AnalogMotionSensor(nusbio, 4);
                analogMotionSensor.Begin();

                var button = new AnalogButton(nusbio);

                var lightSensor = CalibrateLightSensor(new AnalogLightSensor(nusbio), AnalogLightSensor.LightSensorType.CdsPhotoCell_3mm_45k_140k);
                lightSensor.Begin();

                // Analog Port 5, 6, 7 are only available in
                // Analog Extension PCBv2
                const int    multiButtonPort = 5;
                AnalogSensor multiButton     = null;
                //multiButton = new AnalogSensor(nusbio, multiButtonPort);
                //multiButton.Begin();

                // TC77 Temperature Sensor SPI
                var tc77 = new TC77(nusbio,
                                    clockGpio:  NusbioGpio.Gpio0,
                                    mosiGpio:   NusbioGpio.Gpio1,
                                    misoGpio:   NusbioGpio.Gpio2,
                                    selectGpio: NusbioGpio.Gpio4
                                    );
                tc77.Begin();

                if (nusbio.Type == NusbioType.NusbioType1_Light)
                {
                    tc77._spi.SoftwareBitBangingMode     = true;
                    ad._spiEngine.SoftwareBitBangingMode = true;
                }

                while (nusbio.Loop())
                {
                    if (halfSeconds.IsTimeOut())
                    {
                        nusbio[ledGpio].AsLed.ReverseSet();

                        ConsoleEx.WriteLine(0, 2, string.Format("{0,-15}", DateTime.Now), ConsoleColor.Cyan);

                        lightSensor.SetAnalogValue(ad.Read(lightSensorAnalogPort));
                        ConsoleEx.WriteLine(0, 4, string.Format("Light Sensor       : {0,-18} (ADValue:{1:000.000}, Volt:{2:0.00})       ",
                                                                lightSensor.CalibratedValue.PadRight(18), lightSensor.AnalogValue, lightSensor.Voltage), ConsoleColor.Cyan);

                        analogMotionSensor.SetAnalogValue(ad.Read(motionSensorAnalogPort));
                        var motionType = analogMotionSensor.MotionDetected();
                        if (motionType == DigitalMotionSensorPIR.MotionDetectedType.MotionDetected || motionType == DigitalMotionSensorPIR.MotionDetectedType.None)
                        {
                            ConsoleEx.Write(0, 6, string.Format("Motion Sensor      : {0,-18} (ADValue:{1:000.000}, Volt:{2:0.00})    ",
                                                                motionType, analogMotionSensor.AnalogValue, analogMotionSensor.Voltage), ConsoleColor.Cyan);
                        }

                        ConsoleEx.WriteLine(0, 8, string.Format("Temperature Sensor : {0:0.00}C {1:0.00}F    ", tc77.GetTemperature(),
                                                                tc77.GetTemperature(AnalogTemperatureSensor.TemperatureType.Fahrenheit)), ConsoleColor.Cyan);

                        button.SetAnalogValue(ad.Read(buttonSensorAnalogPort));
                        ConsoleEx.WriteLine(0, 10, string.Format("Button             : {0,-18} [{1:0000}, {2:0.00}V]   ",
                                                                 button.Down ? "Down" : "Up", button.AnalogValue, button.Voltage), ConsoleColor.Cyan);

                        if (multiButton != null)
                        {
                            multiButton.SetAnalogValue(ad.Read(multiButtonPort));
                            ConsoleEx.Write(0, 12, string.Format("Multi Button       : {0,-18} (ADValue:{1:000.000}, Volt:{2:000.000})",
                                                                 multiButton.AnalogValue > 2 ? "Down" : "Up  ",
                                                                 multiButton.AnalogValue,
                                                                 multiButton.Voltage), ConsoleColor.Cyan);
                        }
                    }

                    if (Console.KeyAvailable)
                    {
                        var k = Console.ReadKey(true).Key;

                        if (k == ConsoleKey.C)
                        {
                            Cls(nusbio);
                        }
                        if (k == ConsoleKey.Q)
                        {
                            break;
                        }
                        Cls(nusbio);
                    }
                }
            }
            Console.Clear();
        }
Exemplo n.º 16
0
 internal GrovePiAnalogSensor(AnalogSensor analogSensor, string name, int sensorId, GrovePort port, bool rgbDisplay) :
     base(name, "V", sensorId, SensorType.AnalogSensor, port, rgbDisplay)
 {
     _analogSensor = analogSensor;
 }
Exemplo n.º 17
0
 private void _sensor_MeasurementComplete(AnalogSensor sender, AnalogSensor.MeasurementCompleteEventArgs e)
 {
     Debug.Print("Event : " + e.RawValue.ToString() + ", " + e.Value.ToString());
 }
Exemplo n.º 18
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;
            }

            using (var nusbio = new Nusbio(serialNumber))
            {
                Cls(nusbio);

                const int motionSensorAnalogPort      = 0;
                const int temperatureSensorAnalogPort = 1;
                const int multiButtonPort             = 3;
                const int lightSensorAnalogPort       = 6; // Has a pull down resistor

                var halfSeconds = new TimeOut(200);

                /*
                 *  Mcp300X - SPI Config
                 *  gpio 0 - CLOCK
                 *  gpio 1 - MOSI
                 *  gpio 2 - MISO
                 *  gpio 3 - SELECT
                 */
                ad = new MCP3008(nusbio,
                                 selectGpio: NusbioGpio.Gpio3,
                                 mosiGpio: NusbioGpio.Gpio1,
                                 misoGpio: NusbioGpio.Gpio2,
                                 clockGpio: NusbioGpio.Gpio0);
                ad.Begin();

                var analogTempSensor = new Tmp36AnalogTemperatureSensor(nusbio, 5);
                analogTempSensor.Begin();

                var analogMotionSensor = new AnalogMotionSensor(nusbio, 4);
                analogMotionSensor.Begin();

                var lightSensor = CalibrateLightSensor(new AnalogLightSensor(nusbio), AnalogLightSensor.LightSensorType.CdsPhotoCell_3mm_45k_140k);
                lightSensor.Begin();

                AnalogSensor multiButton = null;
                //multiButton = new AnalogSensor(nusbio, multiButtonPort);
                //multiButton.Begin();

                ulong loopCounter = 0;

                while (nusbio.Loop())
                {
                    if (halfSeconds.IsTimeOut())
                    {
                        ConsoleEx.WriteLine(0, 2, string.Format("{0,-20}, {1}", DateTime.Now, loopCounter++), ConsoleColor.Cyan);

                        lightSensor.SetAnalogValue(ad.Read(lightSensorAnalogPort));
                        ConsoleEx.WriteLine(0, 4, string.Format("Light Sensor       : {0} (ADValue:{1:000.000}, Volt:{2:000.000})    ",
                                                                lightSensor.CalibratedValue.PadRight(18),
                                                                lightSensor.AnalogValue,
                                                                lightSensor.Voltage), ConsoleColor.Cyan);

                        // There is an issue with the TMP36 and the ADC MCP3008
                        // The correction is to add a 2k resistors between the out of the temperature sensor
                        // and the AD port and increase the value by 14%
                        const int TMP36_AccuracyCorrection = 14;
                        analogTempSensor.SetAnalogValue(ad.Read(temperatureSensorAnalogPort, TMP36_AccuracyCorrection));
                        ConsoleEx.WriteLine(0, 6, string.Format("Temperature Sensor : {0:00.00}C, {1:00.00}F     (ADValue:{2:0000}, Volt:{3:000.000})      ",
                                                                analogTempSensor.GetTemperature(AnalogTemperatureSensor.TemperatureType.Celsius),
                                                                analogTempSensor.GetTemperature(AnalogTemperatureSensor.TemperatureType.Fahrenheit),
                                                                analogTempSensor.AnalogValue,
                                                                analogTempSensor.Voltage), ConsoleColor.Cyan);

                        analogMotionSensor.SetAnalogValue(ad.Read(motionSensorAnalogPort));
                        var motionType = analogMotionSensor.MotionDetected();
                        if (motionType == DigitalMotionSensorPIR.MotionDetectedType.MotionDetected ||
                            motionType == DigitalMotionSensorPIR.MotionDetectedType.None ||
                            motionType == DigitalMotionSensorPIR.MotionDetectedType.SameMotionDetected)
                        {
                            ConsoleEx.Write(0, 8, string.Format("Motion Sensor      : {0,-18} (ADValue:{1:000.000}, Volt:{2:000.000})", motionType, analogMotionSensor.AnalogValue, analogMotionSensor.Voltage), ConsoleColor.Cyan);
                        }

                        if (multiButton != null)
                        {
                            multiButton.SetAnalogValue(ad.Read(multiButtonPort));
                            ConsoleEx.Write(0, 10, string.Format("Multi Button       : {0,-18} (ADValue:{1:000.000}, Volt:{2:000.000})",
                                                                 multiButton.AnalogValue > 2 ? "Down" : "Up  ",
                                                                 multiButton.AnalogValue,
                                                                 multiButton.Voltage), ConsoleColor.Cyan);
                        }
                    }

                    if (Console.KeyAvailable)
                    {
                        var k = Console.ReadKey(true).Key;

                        if (k == ConsoleKey.C)
                        {
                            Cls(nusbio);
                        }
                        if (k == ConsoleKey.Q)
                        {
                            break;
                        }
                        Cls(nusbio);
                    }
                }
            }
            Console.Clear();
        }