Sensor Cahaya Digital – Nyalakan LED dengan Cahaya Lingkungan Menggunakan Windows 10 IoT Core
Proyek Windows 10 IoT Core ini menunjukkan cara menggerakkan LED secara real-time berdasarkan pembacaan dari sensor cahaya digital. Dengan hanya memantau pin GPIO yang terpasang ke sensor, aplikasi menyalakan LED setiap kali cahaya terdeteksi atau tidak ada.
Ringkasan Proyek
Tujuannya sederhana: saat cahaya lingkungan hadir, LED menyala; saat cahaya padam, LED mati. Seluruh logika ditangani dalam satu berkas C# tanpa UI, membuat kode ringan dan ideal untuk prototipe cepat.
Demo hasil proyek (placeholder gambar)
Menyiapkan Papan
Di bawah adalah diagram penghubungan. Bebas menyesuaikan nomor pin selama Anda memperbarui kode sesuai dengan itu.
- Sensor Cahaya Digital → GPIO #5
- LED Merah → GPIO #12
Bagian yang Saya Suka: Coding!
Aplikasi ini hanya berisi satu halaman yang menempatkan seluruh logika, menjaga proyek tetap ringkas.
Langkah 1: Buat Proyek UWP
- Buka Visual Studio 2017 atau 2015.
- Pilih Blank App (Universal Windows).
- Setel nama proyek menjadi DigitalLightSensorApp.
Langkah 2: Implementasikan Logika
Buka MainPage.xaml.cs dan ganti direktif using yang ada dengan berikut:
using Windows.UI.Xaml.Controls; using Windows.Devices.Gpio;
Deklarasikan anggota pin GPIO sensor dan LED:
private GpioPin _sensorPin; private GpioPin _ledPin;
Tetapkan nomor pin GPIO:
private int _sensorGpioPinNumber = 5; private int _ledGpioPinNumber = 12;
Buat rutin inisialisasi yang membuka pin dan mengatur mode mereka:
private void Initialize() { var gpioController = GpioController.GetDefault(); // Sensor – input _sensorPin = gpioController.OpenPin(_sensorGpioPinNumber); _sensorPin.SetDriveMode(GpioPinDriveMode.Input); _sensorPin.ValueChanged += HandleSensorLightDetectionChange; // LED – output _ledPin = gpioController.OpenPin(_ledGpioPinNumber); _ledPin.SetDriveMode(GpioPinDriveMode.Output); // Status awal HandleLightStatus(); }
Merespons perubahan sensor:
private void HandleSensorLightDetectionChange(GpioPin sender, GpioPinValueChangedEventArgs args) { HandleLightStatus(); }
Nyalakan/matikan LED berdasarkan pembacaan sensor. Nilai tinggi menunjukkan kegelapan, sementara rendah berarti cahaya hadir:
private void HandleLightStatus() { if (_sensorPin.Read() == GpioPinValue.High) { _ledPin.Write(GpioPinValue.Low); // Matikan LED } else { _ledPin.Write(GpioPinValue.High); // Nyalakan LED } }
Letakkan panggilan Initialize di konstruktor halaman setelah InitializeComponent():
public MainPage() { this.InitializeComponent(); Initialize(); }
Kode Sumber Lengkap
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); } } } }
Kode di atas berjalan terus-menerus, bereaksi segera terhadap perubahan cahaya lingkungan.
Untuk detail tambahan, lihat dokumentasi Sensor Cahaya Digital.