Capteur de lumière numérique – Alimenter une LED avec la lumière ambiante via Windows 10 IoT Core
Présentation du projet
Ce projet Windows 10 IoT Core démontre comment piloter une LED en temps réel en fonction de la lecture d'un capteur de lumière numérique. En surveillant simplement la broche GPIO connectée au capteur, l'application bascule la LED chaque fois que la lumière est détectée ou absente.
Démonstration du résultat du projet (image placeholder)
Configuration de la carte
Voici le schéma de câblage. N'hésitez pas à ajuster les numéros de broches tant que vous mettez à jour le code en conséquence.
- Capteur de lumière numérique → GPIO #5
- LED rouge → GPIO #12
La partie que j'aime : Le codage !
Cette application ne contient qu'une seule page qui héberge toute la logique, gardant le projet léger et idéal pour le prototypage rapide.
Étape 1 : Créer le projet UWP
- Ouvrez Visual Studio 2017 ou 2015.
- Choisissez Application vide (Universal Windows).
- Définissez le nom du projet sur DigitalLightSensorApp.
Étape 2 : Implémenter la logique
Ouvrez MainPage.xaml.cs et remplacez les directives using existantes par :
using Windows.UI.Xaml.Controls;
using Windows.Devices.Gpio;
Déclarez les membres des broches GPIO du capteur et de la LED :
private GpioPin _sensorPin;
private GpioPin _ledPin;
Définissez les numéros de broches GPIO :
private int _sensorGpioPinNumber = 5;
private int _ledGpioPinNumber = 12;
Créez une routine d'initialisation qui ouvre les broches et définit leurs modes :
private void Initialize() {
var gpioController = GpioController.GetDefault();
// Capteur – entrée
_sensorPin = gpioController.OpenPin(_sensorGpioPinNumber);
_sensorPin.SetDriveMode(GpioPinDriveMode.Input);
_sensorPin.ValueChanged += HandleSensorLightDetectionChange;
// LED – sortie
_ledPin = gpioController.OpenPin(_ledGpioPinNumber);
_ledPin.SetDriveMode(GpioPinDriveMode.Output);
// État initial
HandleLightStatus();
}
Réagissez aux changements du capteur :
private void HandleSensorLightDetectionChange(GpioPin sender, GpioPinValueChangedEventArgs args) {
HandleLightStatus();
}
Basculez la LED en fonction de la lecture du capteur. Une valeur haute indique l'obscurité, tandis que faible signifie que la lumière est présente :
private void HandleLightStatus() {
if (_sensorPin.Read() == GpioPinValue.High) {
_ledPin.Write(GpioPinValue.Low); // Éteint la LED
} else {
_ledPin.Write(GpioPinValue.High); // Allume la LED
}
}
Placez l'appel Initialize dans le constructeur de la page après InitializeComponent() :
public MainPage() {
this.InitializeComponent();
Initialize();
}
Code source complet
using Windows.UI.Xaml.Controls;
using Windows.Devices.Gpio;
namespace DigitalLightSensorApp {
public sealed partial class MainPage : Page {
private GpioPin _sensorPin;
private GpioPin _ledPin;
private int _sensorGpioPinNumber = 5;
private int _ledGpioPinNumber = 12;
public MainPage() {
this.InitializeComponent();
Initialize();
}
private void Initialize() {
var gpioController = GpioController.GetDefault();
_sensorPin = gpioController.OpenPin(_sensorGpioPinNumber);
_sensorPin.SetDriveMode(GpioPinDriveMode.Input);
_sensorPin.ValueChanged += HandleSensorLightDetectionChange;
_ledPin = gpioController.OpenPin(_ledGpioPinNumber);
_ledPin.SetDriveMode(GpioPinDriveMode.Output);
HandleLightStatus();
}
private void HandleSensorLightDetectionChange(GpioPin sender, GpioPinValueChangedEventArgs args) {
HandleLightStatus();
}
private void HandleLightStatus() {
if (_sensorPin.Read() == GpioPinValue.High) {
_ledPin.Write(GpioPinValue.Low);
} else {
_ledPin.Write(GpioPinValue.High);
}
}
}
}
Le code ci-dessus s'exécute en continu, réagissant instantanément aux changements de lumière ambiante.
Pour des détails supplémentaires, consultez la documentation Digital Light Sensor.
Processus de fabrication
- Capteurs magnétiques Hall numériques : fondamentaux, conception et applications automobiles
- Comment connecter un capteur de température DS1820 One‑Wire à un Raspberry Pi via GPIO
- Connexion du capteur ultrasonique HC‑SR04 au Raspberry Pi 3 : Guide complet
- Capteur de suivi de ligne KY‑033 avec Raspberry Pi : Détecteur de porte/lignes simple
- Capteur de pression barométrique BMP180 I2C – Guide d'intégration Raspberry Pi
- Comment connecter un thermomètre numérique DS18B20 One-Wire à un Raspberry Pi – Guide étape par étape
- Lecture d'un capteur Hall linéaire avec Raspberry Pi : Guide Java et insights ADC0832
- Construire un système de surveillance température et lumière multi-capteurs avec Raspberry Pi et DS18B20
- Test du capteur de température DS18B20 sur Raspberry Pi