Sensor de luz digital
Una aplicación principal de Windows 10 IoT que se enciende un LED basado en la lectura del sensor de luz digital.
Historia
Me tomó un tiempo darme cuenta de que leer el estado del sensor de luz digital es sencillo y ¡simplemente depende de leer el valor GPIO!
La idea del proyecto es muy simple, solo enciende el LED en luz cuando el sensor detecta luz y al revés.
Demostración del resultado del proyecto
¡Así que sigamos adelante y revisemos el diagrama de cableado a continuación y, por cierto, no encontré un diagrama para el sensor de luz digital, así que lo guardé como texto!
Configuración del tablero
Diagrama de cableado
- Sensor de luz digital:GPIO n. ° 5
- LED rojo:GPIO n. ° 12
También depende de usted cambiar los números de PIN, pero asegúrese de que se reflejen correctamente en el código UWP.
¡La parte que me gusta, la codificación!
Este proyecto solo tiene una página que contiene el código C # y esta vez no se requiere UI.
Paso 1:Creación de la aplicación para UWP
- Abra Visual Studio 2017/2015
- Seleccione Aplicación en blanco (Windows universal)
- Ingrese el nombre del proyecto "DigitalLightSensorApp"
¡Aquí va la foto!
Paso 2: Abra MainPage.xaml.cs y vamos a codificar
Elimine todo el uso y solo incluya lo siguiente
usando Windows.UI.Xaml.Controls;
usando Windows.Devices.Gpio;
Declare el sensor y las variables del miembro del pin GPIO del LED
GpioPin privado _sensorPin;
GpioPin privado _ledPin;;
Declarar las variables de número de pin GPIO
privado int _sensorGpioPinNumber =5;
privado int _ledGpioPinNumber =12;
Cree el método de inicialización
private void Initialize ()
{
// Obtenga el controlador Gpio predeterminado
var gpioController =GpioController.GetDefault ();
// Abra el sensor Gpio Pin y configure el modo en input
_sensorPin =gpioController.OpenPin (_sensorGpioPinNumber);
_sensorPin.SetDriveMode (GpioPinDriveMode.Input);
_sensorPin.ValueChanged + =HandleSensorLightDetectionChange;;
// Abra el LED Gpio Pin y configure el modo en salida
_ledPin =gpioController.OpenPin (_ledGpioPinNumber);
_ledPin.SetDriveMode (GpioPinDriveMode.Output);
handleLightStatus ( );
}
Llame al método handleLightStaus en el evento HandleSensorLightDetectionChange
Private void HandleSensorLightDetectionChange (GpioPin sender,
GpioPinValueChangedEventArgs args)
{
handleLightStatus ();
}
Cree el método handleLightStatus
private void handleLightStatus ()
{
// si ningún sensor de luz detectó luz, apague el LED
if (_sensorPin.Read () ==GpioPinValue.High)
{
// Apaga el LED
_ledPin.Write (GpioPinValue.Low);
}
else
{
// Enciende el LED
_ledPin.Write(GpioPinValue.High);
}
}
Descubrí que el valor "Alto" devuelto por el sensor Gpio Pin indica que no se detectó luz y "Bajo" indica que se detectó luz.
El código completo se puede encontrar a continuación:
usando Windows.UI.Xaml.Controls;
usando Windows.Devices.Gpio;
espacio de nombres DigitalLightSensorApp
{
clase parcial sellada pública MainPage:Página
{
private GpioPin _sensorPin;
private GpioPin _ledPin;
private int _sensorGpioPinNumber =5;
private int _ledGpioPinNumber =12;
public MainPage ()
{
this.InitializeComponent ();
}
private void Initialize ()
{
// Obtenga el controlador Gpio predeterminado
var gpioController =GpioController.GetDefault ();
// Abra el sensor Gpio Pin y configure el modo en input
_sensorPin =gpioController.OpenPin (_sensorGpioPinNumber);
_sensorPin.SetDriveMode (GpioPinDriveMode.Input);
_sensorPin.ValueChanged =HandleSensorLightDetectionChange;;
// Abra el LED Gpio Pin y configure el modo en salida
_ledPin =gpioController.OpenPin (_ledGpioPinNumber);
_ledPin.SetDriveMode (GpioPinDriveMode.Output);
handleLightStatus ( );
}
private void HandleSensorLightDetectionChange (GpioPin sender, GpioPinValueChangedEventArgs args)
{
handleLightStatus ();
}
private void handleLightStatus ()
{
// si ningún sensor de luz detectó luz, apague el LED
if (_sensorPin.Read () ==GpioPinValue.High)
{
// Gire apaga el LED
_ledPin.Write (GpioPinValue.Low);
}
else
{
// Enciende el LED
_ledPin.Write (GpioPinValue .Alto);
}
}
}
}
Leer más detalles:Sensor de luz digital
Proceso de manufactura
- Fundamentos de los sensores magnéticos digitales
- Sensor de temperatura de 1 cable DS1820 en Raspberry Pi (GPIO directamente)
- Sensor ultrasónico (HC-SR04) + Raspberry Pi
- Sensor de seguimiento de línea con RPi
- Sensor de presión barométrica digital BMP180 I2C
- Sensor de termómetro digital de 1 cable Raspberry Pi (DS18B20)
- Sensor de pasillo digital Raspberry Pi en JAVA
- Sensor de temperatura y luz Raspberry Pi
- Prueba del sensor DS18B20
- Luz solar de entrada al nodo de sensor inalámbrico MSP430
- Un sensor de proximidad analógico simple con interfaz digital (para Raspberry Pi) [última actualización:7 de febrero de 2014]