数字光传感器
打开的 Windows 10 IoT 核心应用程序基于数字光传感器读数的 LED。
故事
我花了一些时间才明白读取数字光传感器的状态很简单,它仅取决于读取 GPIO 值!
这个项目的思路很简单,就是当传感器检测到光线时打开LED灯,反之即可。
项目结果演示
让我们继续看下面的接线图,顺便说一下,我没有找到数字光传感器的图,所以我把它作为文本保留了!!!!
设置董事会
接线图
- 数字光传感器:GPIO # 5
- 红色 LED:GPIO # 12
您也可以更改引脚编号,但要确保它们在 UWP 代码中正确反映。
我喜欢的部分,编码!
本项目仅包含C#代码的页面,本次无需UI。
步骤 1:创建 UWP 应用程序
- 打开 Visual Studio 2017/2015
- 选择空白应用(通用 Windows)
- 输入项目名称“DigitalLightSensorApp”
照片放在这里!
第 2 步: 打开 MainPage.xaml.cs 并编写代码
去掉所有使用,只包含以下内容
使用 Windows.UI.Xaml.Controls;
使用 Windows.Devices.Gpio;
声明sensor和LED GPIO pin成员变量
私有 GpioPin _sensorPin;
私有 GpioPin _ledPin;;
声明GPIO引脚编号变量
private int _sensorGpioPinNumber =5;
private int _ledGpioPinNumber =12;
创建初始化方法
private void Initialize()
{
// 获取默认的 Gpio Controller
var gpioController =GpioController.GetDefault();
//打开传感器 Gpio Pin 并设置模式为input
_sensorPin =gpioController.OpenPin(_sensorGpioPinNumber);
_sensorPin.SetDriveMode(GpioPinDriveMode.Input);
_sensorPin.ValueChanged +=HandleSensorLightDetectionChange;;
// 打开 LED Gpio Pin 并设置模式为输出
_ledPin =gpioController.OpenPin(_ledGpioPinNumber);
_ledPin.SetDriveMode(GpioPinDriveMode.Output);
handleLightStatus( );
}
在HandleSensorLightDetectionChange事件中调用handleLightStaus方法
private void HandleSensorLightDetectionChange(GpioPin sender,
GpioPinValueChangedEventArgs args)
{
handleLightStatus();
}
创建handleLightStatus方法
private void handleLightStatus()
{
// 如果没有光传感器检测到光,则关闭 LED
if (_sensorPin.Read() ==GpioPinValue.High)
{
//关闭LED
_ledPin.Write(GpioPinValue.Low);
}
else
{
//打开LED
_ledPin.Write(GpioPinValue.High);
}
}
我发现从传感器 Gpio Pin 返回的“高”值表示没有检测到光,“低”表示检测到光。
完整代码如下:
using Windows.UI.Xaml.Controls;
using Windows.Devices.Gpio;
namespace DigitalLightSensorApp
{
公共密封部分类 MainPage :Page
{
private GpioPin _sensorPin;
private GpioPin _ledPin;
private int _sensorGpioPinNumber =5;
private int _ledGpioPinNumber =12;
public MainPage()
{
this.InitializeComponent();
}
private void Initialize()
{
// 获取默认的 Gpio Controller
var gpioController =GpioController.GetDefault();
//打开sensor Gpio Pin,设置模式为input
_sensorPin =gpioController.OpenPin(_sensorGpioPinNumber);
_sensorPin.SetDriveMode(GpioPinDriveMode.Input);
_sensorPin.ValueChanged + =HandleSensorLightDetectionChange;;
// 打开 LED Gpio Pin 并设置模式为输出
_ledPin =gpioController.OpenPin(_ledGpioPinNumber);
_ledPin.SetDriveMode(GpioPinDriveMode.Output);
handleLightStatus( );
}
private void HandleSensorLightDetectionChange(GpioPin sender, GpioPinValueChangedEventArgs args)
{
handleLightStatus();
}
private void handleLightStatus()
{
// 如果没有光传感器检测到光,则关闭 LED
if (_sensorPin.Read() ==GpioPinValue.High)
{
//关闭关闭 LED
_ledPin.Write(GpioPinValue.Low);
}
else
{
//打开 LED
_ledPin.Write(GpioPinValue .High);
}
}
}
}
阅读更多细节:数字光传感器
制造工艺
- 数字磁传感器基础
- Raspberry Pi 上的 1 线温度传感器 DS1820(直接 GPIO)
- 超声波传感器 (HC-SR04) + Raspberry Pi
- 带 RPi 的线跟踪传感器
- BMP180 I2C 数字气压传感器
- Raspberry Pi 1-Wire 数字温度计传感器 (DS18B20)
- JAVA 中的树莓派数字霍尔传感器
- Raspberry Pi 温度和光传感器
- 测试 DS18B20 传感器
- 太阳能车道灯到 MSP430 无线传感器节点
- 带有数字接口的简单模拟接近传感器(用于 Raspberry Pi)[最后更新:2014 年 2 月 7 日]
- 使用 Raspberry Pi 和 Twilio 的支持语音和 SMS 的光传感器