산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

디지털 조도 센서 – 윈도우 10 IoT Core로 주변광에 따라 LED 제어하기

이 윈도우 10 IoT Core 프로젝트는 디지털 조도 센서의 읽기 값을 기반으로 실시간으로 LED를 구동하는 방법을 보여줍니다. 센서에 연결된 GPIO 핀을 모니터링하기만 하면 빛이 감지되거나 없을 때마다 LED를 토글합니다. 전체 로직이 UI 없는 단일 C# 파일에 들어있어 코드가 가볍고 빠른 프로토타이핑에 이상적입니다.

프로젝트 개요

목표는 간단합니다: 주변광이 있으면 LED가 켜지고, 빛이 사라지면 LED가 꺼집니다. 모든 로직이 단일 C# 파일에 UI 없이 처리되어 코드가 가볍고 빠른 프로토타이핑에 이상적입니다.

프로젝트 결과 데모 (이미지 플레이스홀더)

보드 설정

아래는 배선도입니다. 코드에서 해당 핀 번호를 업데이트하는 한 핀 번호는 자유롭게 조정 가능합니다.

내가 좋아하는 부분: 코딩!

이 애플리케이션은 전체 로직을 담은 단일 페이지만 포함해 프로젝트를 가볍게 유지합니다.

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. 디지털 마그네틱 홀 센서: 원리, 설계, 자동차 애플리케이션
  2. DS1820 원와이어 온도 센서를 라즈베리 파이 GPIO로 연결하는 방법
  3. HC-SR04 초음파 거리 센서를 라즈베리 파이 3에 연결하는 완벽 가이드
  4. 라즈베리 파이와 KY-033 라인 트래킹 센서로 문 열림/선 감지하기
  5. BMP180 I2C 기압 센서 – 라즈베리 파이 연동 가이드
  6. DS18B20 원와이어 디지털 온도계를 라즈베리 파이에 연결하기 – 단계별 가이드
  7. 라즈베리 파이로 리니어 홀 센서 읽기: 자바 가이드 & ADC0832 통찰
  8. 라즈베리 파이 & DS18B20으로 다중 센서 온도 & 조도 모니터링 시스템 구축
  9. 라즈베리 파이에서 DS18B20 온도 센서 테스트하기
  10. 4달러 태양광 정원등을 스마트 무선 센서 노드로: MSP430 + nRF24L01+ 정원 모니터링