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 bey uygulamayı Rpi üzerinde Visual Code ile mı çalıştırdınız. Ben şuan buna benzer proje olarak C# ekranı ile diğer donanımları kontrol etmek istiyorum.
Yapılan proje Visual Studio üzerinden Raspberry Pi’ya aktarılıp öyle boot edilmiştir.