亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

数字光照传感器驱动 LED:Windows 10 IoT Core 树莓派实战

项目概述

本 Windows 10 IoT Core 项目演示如何根据数字光照传感器读实时驱动 LED。仅监控传感器连接的 GPIO 引脚,光照存在点亮 LED,光照消失熄灭 LED。全部逻辑集中在单个 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;

定义引脚编号:

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;
    // LED - 输出
    _ledPin = gpioController.OpenPin(_ledGpioPinNumber);
    _ledPin.SetDriveMode(GpioPinDriveMode.Output);
    // 初始状态
    HandleLightStatus();
}

响应传感器变化:

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

根据读值控制 LED。高电平=黑暗→熄灭 LED;低电平=有光→点亮 LED:

private void HandleLightStatus() {
    if (_sensorPin.Read() == GpioPinValue.High) {
        _ledPin.Write(GpioPinValue.Low); // 关灯
    } else {
        _ledPin.Write(GpioPinValue.High); // 开灯
    }
}

构造函数调用初始化:

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. 树莓派 GPIO 直连 DS1820 单总线温度传感器指南
  2. 树莓派 3 接 HC‑SR04 超声波测距传感器完全指南
  3. 树莓派接 KY‑033 循迹/门状态传感器:简易 Python 实现
  4. BMP180 I2C 气压传感器树莓派接入指南
  5. 树莓派接入 DS18B20 单总线数字温度计:分步实战指南
  6. 树莓派读取线性霍尔传感器:Java 指南与 ADC0832 深度解析
  7. 树莓派多传感器温度光照监测系统:DS18B20 实战构建
  8. 树莓派 DS18B20 温度传感器测试与 HC-SR04 超声波测距实战
  9. 4 美元太阳能庭院灯改造:MSP430 + nRF24L01+ 打造花园无线传感器节点
  10. 树莓派纯数字引脚实现低成本红外测距传感器:RC 计时法
  11. 基于树莓派的卫生间占用传感器:通过 Twilio 实现语音与短信提醒
  12. 数字磁性霍尔传感器:原理、设计与汽车应用