Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Цифровой датчик света — управление светодиодом по освещённости на Windows 10 IoT Core

Этот проект на Windows 10 IoT Core демонстрирует, как управлять светодиодом в реальном времени на основе показаний цифрового датчика света. Просто моня GPIO-пин, к которому подключён датчик, приложение переключает светодиод при появлении или исчезновении света.

Обзор проекта

Цель проста: когда есть окружающий свет, светодиод горит; когда темнеет — гаснет. Вся логика размещена в одном C#-файле без UI, что делает код лёгким и идеальным для быстрого прототипирования.

Демо результата проекта (заглушка изображения)

Настройка платы

Ниже приведена схема подключения. Номера пинов можно менять, если обновить код соответственно.

Самая интересная часть: кодирование!

Приложение содержит только одну страницу со всей логикой, что делает проект компактным.

Шаг 1: Создание UWP-проекта

Шаг 2: Реализация логики

Откройте MainPage.xaml.cs и замените using-директивы на:

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

Объявите члены для GPIO-пинов датчика и светодиода:

private GpioPin _sensorPin;
private GpioPin _ledPin;

Задайте номера GPIO-пинов:

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

Создайте инициализацию, открывающую пины и устанавливающую их режимы:

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); // Выключить LED
    } else {
        _ledPin.Write(GpioPinValue.High); // Включить LED
    }
}

Вызовите Initialize в конструкторе страницы после InitializeComponent():

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

Полный исходный код

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

Приведённый код работает непрерывно, мгновенно реагируя на изменения освещённости.

Для дополнительных деталей обратитесь к документации Digital Light Sensor.

Производственный процесс

  1. Цифровые магнитные Холл‑сенсоры: основы, дизайн и автомобильные применения
  2. Как подключить однопроводный датчик температуры DS1820 к Raspberry Pi через GPIO
  3. Подключение ультразвукового датчика HC‑SR04 к Raspberry Pi 3 — полное руководство
  4. Датчик слежения за линией на Raspberry Pi — простой детектор двери/линии KY‑033
  5. Интеграция барометрического датчика BMP180 с Raspberry Pi по I2C
  6. Подключение цифрового термометра DS18B20 1-Wire к Raspberry Pi — пошаговое руководство
  7. Чтение линейного Холловского датчика с Raspberry Pi: руководство по Java и особенности ADC0832
  8. Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20
  9. Тестирование датчика температуры DS18B20 на Raspberry Pi
  10. От $4 солнечного фонаря к умному беспроводному сенсорному узлу: MSP430 + nRF24L01+ для мониторинга сада