Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Digitale Lichtsensor – LED Aansturen met Omgevingslicht via Windows 10 IoT Core

Dit Windows 10 IoT Core-project demonstreert hoe je een LED in real-time kunt aansturen op basis van de meting van een digitale lichtsensor. Door simpelweg de GPIO-pin die aan de sensor gekoppeld is te monitoren, schakelt de applicatie de LED wanneer licht gedetecteerd wordt of afwezig is.

Projectoverzicht

Het doel is simpel: wanneer omgevingslicht aanwezig is, gaat de LED aan; wanneer het licht verdwijnt, gaat de LED uit. De gehele logica wordt afgehandeld in een enkel C#-bestand zonder UI, wat de code lichtgewicht en ideaal maakt voor snelle prototyping.

Demo van het projectresultaat (afbeelding placeholder)

Het Bord Instellen

Hieronder is het aansluitschema. Voel je vrij om de pinnummers aan te passen zolang je de code dienovereenkomstig bijwerkt.

  • Digitale Lichtsensor → GPIO #5
  • Rode LED → GPIO #12

Het Deel Dat Ik Leuk Vind: Coderen!

Deze applicatie bevat slechts één pagina die de gehele logica huisvest, wat het project lean houdt.

Stap 1: Het UWP-project Aanmaken

  • Open Visual Studio 2017 of 2015.
  • Kies Blank App (Universal Windows).
  • Stel de projectnaam in op DigitalLightSensorApp.

Stap 2: De Logica Implementeren

Open MainPage.xaml.cs en vervang de bestaande using-directives door het volgende:

using Windows.UI.Xaml.Controls;
using Windows.Devices.Gpio;

Declareer de sensor- en LED-GPIO-pin leden:

private GpioPin _sensorPin;
private GpioPin _ledPin;

Definieer de GPIO-pinnummers:

private int _sensorGpioPinNumber = 5;
private int _ledGpioPinNumber = 12;

Maak een initialisatieroutine die de pinnen opent en hun modi instelt:

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);
    // Initiële staat
    HandleLightStatus();
}

Reageer op sensorveranderingen:

private void HandleSensorLightDetectionChange(GpioPin sender, GpioPinValueChangedEventArgs args) {
    HandleLightStatus();
}

Schakel de LED op basis van de sensorwaarde. Een hoge waarde duidt op duisternis, terwijl laag betekent dat licht aanwezig is:

private void HandleLightStatus() {
    if (_sensorPin.Read() == GpioPinValue.High) {
        _ledPin.Write(GpioPinValue.Low); // LED uit
    } else {
        _ledPin.Write(GpioPinValue.High); // LED aan
    }
}

Plaats de Initialize-aanroep in de page-constructor na InitializeComponent():

public MainPage() {
    this.InitializeComponent();
    Initialize();
}

Volledige Broncode

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);
            }
        }
    }
}

De bovenstaande code draait continu, en reageert direct op veranderingen in omgevingslicht.

Voor aanvullende details, raadpleeg de Digitale Lichtsensor documentatie.

Productieproces

  1. Hoe een DS1820 One-Wire temperatuursensor aan te sluiten op een Raspberry Pi via GPIO
  2. HC-SR04 ultrasoon-sensor aansluiten op Raspberry Pi 3 – Complete gids
  3. Lijnvolgsensor met Raspberry Pi – Simpele KY-033 deur/lijndetector
  4. BMP180 I2C Barometrische Druksensor – Raspberry Pi Integratiehandleiding
  5. Hoe een DS18B20 One-Wire Digitale Thermometer aan te Sluiten op een Raspberry Pi – Stapsgewijze Handleiding
  6. Een Lineaire Hall-sensor Uitlezen met Raspberry Pi: Java-handleiding & ADC0832-inzichten
  7. Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
  8. De DS18B20 Temperatuursensor Testen op Raspberry Pi
  9. Van $4 Zonnestandaard tot Slimme Draadloze Sensor-knooppunt: MSP430 + nRF24L01+ voor Tuinmonitoring
  10. Goedkope Infrarood Nabijheidssensor voor Raspberry Pi Met Alleen Digitale Pins
  11. Digitale magnetische Hall-sensoren: basisprincipes, ontwerp, en automotive toepassingen