Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

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.

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

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

  1. Digitale Magnetische Hall-Sensoren: Grundlagen, Design und Automotive Applikationen
  2. DS1820 One-Wire Temperatursensor an Raspberry Pi GPIO anschließen
  3. HC-SR04 Ultraschallsensor an Raspberry Pi 3 anschließen – Komplettanleitung
  4. Line-Tracking-Sensor mit Raspberry Pi – Einfacher KY-033 Tür/Line Detektor
  5. BMP180 I2C Barometer-Sensor – Raspberry Pi Integrationsanleitung
  6. DS18B20 1-Wire Digitalthermometer an Raspberry Pi anschließen – Schritt-für-Schritt-Anleitung
  7. Linearen Hall-Sensor mit Raspberry Pi auslesen: Java-Anleitung & ADC0832 Einblicke
  8. Multi-Sensor Temperatur- & Licht-Überwachung mit Raspberry Pi & DS18B20
  9. DS18B20 Temperatursensor am Raspberry Pi testen
  10. Aus 4$ Solar-Licht wird smarter Wireless-Sensorknoten: MSP430 + nRF24L01+ für Garten-Monitoring