工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

デジタル光センサー:Windows 10 IoT Coreで周囲光に応じてLEDを制御

このWindows 10 IoT Coreプロジェクトでは、デジタル光センサーの読み取り値に基づいてリアルタイムでLEDを駆動する方法を示します。センサー接続のGPIOピンを監視するだけで、光の有無に応じてLEDをトグルするアプリケーションです。

プロジェクト概要

目標はシンプル:周囲光があるときLEDを点灯、光がなくなると消灯。すべてのロジックはUIなしの単一C#ファイルで処理され、コードが軽量で迅速なプロトタイピングに最適です。

プロジェクト結果のデモ(画像プレースホルダー)

ボードのセットアップ

以下は配線図。コードも合わせて更新すればピン番号は変更可能です。

コーディング部分

このアプリケーションはロジック全体を格納する単一ページのみで構成され、プロジェクトを簡潔に保っています。

ステップ1:UWPプロジェクトの作成

ステップ2:ロジックの実装

MainPage.xaml.cs を開き、既存のusingディレクティブを以下に置換:

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

センサーとLEDの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;
    // LED - 出力
    _ledPin = gpioController.OpenPin(_ledGpioPinNumber);
    _ledPin.SetDriveMode(GpioPinDriveMode.Output);
    // 初期状態
    HandleLightStatus();
}

センサー変化への応答:

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

センサー読み取り値に基づきLEDをトグル。ハイ値は暗闇、ロー値は光ありを示す:

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

InitializeComponent() の後、ページコンストラクタで Initialize を呼び出し:

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. DS1820ワンワイヤー温度センサーをGPIOでRaspberry Piに接続する方法
  2. HC-SR04超音波距離センサーをRaspberry Pi 3に接続 – 完全ガイド
  3. Raspberry Piでライントラッキングセンサー – シンプルなKY-033ドア/ライン検出器
  4. BMP180 I2C気圧センサー - Raspberry Pi統合ガイド
  5. DS18B20ワンワイヤーデジタル温度計をRaspberry Piに接続 - ステップバイステップガイド
  6. Raspberry Piでリニアホールセンサーを読み取り: JavaガイドとADC0832の知見
  7. Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
  8. Raspberry PiでDS18B20温度センサーをテスト
  9. 4ドルのソーラーライトをスマートワイヤレスセンサーノードに変身: MSP430 + nRF24L01+で庭園監視
  10. デジタルピンのみでRaspberry Pi用低コスト赤外線近接センサーを構築
  11. デジタル磁気ホールセンサ:基礎、設計、自動車応用