RPi & Windows IoT Core & C# – 2 – Butonlu LED Kontrol

using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Media;
using Windows.Devices.Gpio;
using Windows.Foundation;

namespace App2
{
public sealed partial class MainPage : Page
{
// Pin numaralandırılmaları
private const int LED_PIN = 12;
private const int BTN_PIN = 20;

private GpioPin btnPin;
private GpioPin ledPin;

private GpioPinValue ledDegeri;

public MainPage()
{
this.InitializeComponent();
pinHazirligi();
}

public void pinHazirligi()
{
// gpio nesnesinin yaratılması
var gpio = GpioController.GetDefault();

// gpio doğru çalışmıyorsa bildir
if (gpio == null)
{
GpioStatus.Text = "Gpio çalışmıyor";
return;
}

// Pin portlarının açılması
btnPin = gpio.OpenPin(BTN_PIN);
ledPin = gpio.OpenPin(LED_PIN);

ledPin.SetDriveMode(GpioPinDriveMode.Output);

// Eğer btn girişi pull down şeklinde bağlanmışsa
if (btnPin.IsDriveModeSupported(GpioPinDriveMode.InputPullDown))
{
btnPin.SetDriveMode(GpioPinDriveMode.InputPullDown);
}

/*

// Eğer btn girişi pull up şeklinde bağlanmışsa
if (btnPin.IsDriveModeSupported(GpioPinDriveMode.InputPullUp))
{
btnPin.SetDriveMode(GpioPinDriveMode.InputPullUp);
}

*/

// Normal bağlanmışsa
else
btnPin.SetDriveMode(GpioPinDriveMode.Input);

// Ark önlemesi için zaman gecikmesi
btnPin.DebounceTimeout = TimeSpan.FromMilliseconds(50);
// Değilişlik için fonksiyon referansı
btnPin.ValueChanged += butonBasildiginda;

GpioStatus.Text = "Gpio başarılı";
}

public void butonBasildiginda(GpioPin sender, GpioPinValueChangedEventArgs e)
{

if (e.Edge == GpioPinEdge.FallingEdge)
{
if(ledDegeri == GpioPinValue.High)
{
ledDegeri = GpioPinValue.Low;
ledPin.Write(ledDegeri);
}
else
{
ledDegeri = GpioPinValue.High;
ledPin.Write(ledDegeri);
}

}
}

}
}

Hakan Kaya
Yarı zamanlı mühendis. Yarı zamanlı eğitmen. Biraz da film sever.
error: 5846 sayılı Fikir ve Sanat Eserleri Kanunu tarafında içeriklerin izinsiz kopyalanması, paylaşılması ve çoğaltılması yasaktır.