Digitaler Lichtsensor – LED per Umgebungslicht steuern mit Windows 10 IoT Core
Dieses Windows 10 IoT Core Projekt demonstriert, wie man eine LED in Echtzeit basierend auf der Messung eines digitalen Lichtsensors steuert. Durch einfaches Überwachen des GPIO-Pins am Sensor schaltet die Applikation die LED immer dann, wenn Licht erkannt wird oder fehlt.
Projektüberblick
Das Ziel ist simpel: Bei vorhandenem Umgebungslicht geht die LED an; bei Dunkelheit geht sie aus. Die gesamte Logik liegt in einer einzelnen C#-Datei ohne UI, was den Code schlank und ideal für schnelles Prototyping macht.
Demo des Projektergebnisses (Bild-Platzhalter)
Board einrichten
Unten sehen Sie den Verdrahtungsplan. Passen Sie die Pin-Nummern gerne an, solange Sie den Code entsprechend aktualisieren.
- Digitaler Lichtsensor → GPIO #5
- Rote LED → GPIO #12
Der Teil, der Spaß macht: Coden!
Diese Applikation besteht nur aus einer Seite, die die komplette Logik beherbergt – das Projekt bleibt schlank.
Schritt 1: UWP-Projekt erstellen
- Visual Studio 2017 oder 2015 öffnen.
- Blank App (Universal Windows) wählen.
- Projektname auf DigitalLightSensorApp setzen.
Schritt 2: Logik implementieren
MainPage.xaml.cs öffnen und bestehende using-Direktiven durch folgende ersetzen:
using Windows.UI.Xaml.Controls;
using Windows.Devices.Gpio;
Sensor- und LED-GPIO-Pin-Member deklarieren:
private GpioPin _sensorPin;
private GpioPin _ledPin;
GPIO-Pin-Nummern definieren:
private int _sensorGpioPinNumber = 5;
private int _ledGpioPinNumber = 12;
Initialisierungsroutine erstellen, die Pins öffnet und Modi setzt:
private void Initialize() {
var gpioController = GpioController.GetDefault();
// Sensor – Input
_sensorPin = gpioController.OpenPin(_sensorGpioPinNumber);
_sensorPin.SetDriveMode(GpioPinDriveMode.Input);
_sensorPin.ValueChanged += HandleSensorLightDetectionChange;
// LED – Output
_ledPin = gpioController.OpenPin(_ledGpioPinNumber);
_ledPin.SetDriveMode(GpioPinDriveMode.Output);
// Initialzustand
HandleLightStatus();
}
Auf Sensoränderungen reagieren:
private void HandleSensorLightDetectionChange(GpioPin sender, GpioPinValueChangedEventArgs args) {
HandleLightStatus();
}
LED basierend auf Sensorwert toggeln. High-Wert bedeutet Dunkelheit, Low bedeutet Licht:
private void HandleLightStatus() {
if (_sensorPin.Read() == GpioPinValue.High) {
_ledPin.Write(GpioPinValue.Low); // LED aus
} else {
_ledPin.Write(GpioPinValue.High); // LED an
}
}
Initialize-Aufruf in den Seitenkonstruktor nach InitializeComponent() setzen:
public MainPage() {
this.InitializeComponent();
Initialize();
}
Vollständiger Quellcode
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);
}
}
}
}
Der obige Code läuft kontinuierlich und reagiert sofort auf Änderungen des Umgebungslichts.
Für weitere Details siehe Digital Light Sensor Dokumentation.
Herstellungsprozess
- Digitale Magnetische Hall-Sensoren: Grundlagen, Design und Automotive Applikationen
- DS1820 One-Wire Temperatursensor an Raspberry Pi GPIO anschließen
- HC-SR04 Ultraschallsensor an Raspberry Pi 3 anschließen – Komplettanleitung
- Line-Tracking-Sensor mit Raspberry Pi – Einfacher KY-033 Tür/Line Detektor
- BMP180 I2C Barometer-Sensor – Raspberry Pi Integrationsanleitung
- DS18B20 1-Wire Digitalthermometer an Raspberry Pi anschließen – Schritt-für-Schritt-Anleitung
- Linearen Hall-Sensor mit Raspberry Pi auslesen: Java-Anleitung & ADC0832 Einblicke
- Multi-Sensor Temperatur- & Licht-Überwachung mit Raspberry Pi & DS18B20
- DS18B20 Temperatursensor am Raspberry Pi testen
- Aus 4$ Solar-Licht wird smarter Wireless-Sensorknoten: MSP430 + nRF24L01+ für Garten-Monitoring