[英]GPIO on Raspberry pi c#
我目前正在開發一個使用c#制作覆盆子pi機器人汽車的項目。 我完全不了解c#,所以這是我學習它的方式。
汽車使用L298N控制電機,所以我需要弄清楚如何讓pi從一個引腳輸出高電平,從另一個引腳輸出低電平,然后我就可以找出如何控制它。
但重點是,我寫了一些代碼,希望它能激活其中一個電機,但似乎並沒有。 我希望能夠更好地理解c#和GPIO引腳的人能夠指出錯誤。
謝謝,卡勒姆
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.Devices.Gpio;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
namespace App4
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public void GPIO()
{
GpioController gpio = GpioController.GetDefault();
if (gpio == null)
return;
using (GpioPin pin1 = gpio.OpenPin(5))
{
pin1.Write(GpioPinValue.High);
pin1.SetDriveMode(GpioPinDriveMode.Output);
}
using (GpioPin pin2 = gpio.OpenPin(6))
{
pin2.Write(GpioPinValue.Low);
pin2.SetDriveMode(GpioPinDriveMode.Output);
}
}
}
}
如果你不完全確定GPIO引腳是否正確,你可以使用這個GPIO引腳圖: https : //www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/
如您所見,GPIO引腳5位於第29位。
如果你確定你有正確的引腳,那么我的代碼沒有太大的錯誤。 我能想到的唯一問題是你使用的是using語句:
using (GpioPin pin1 = gpio.OpenPin(5))
{
pin1.Write(GpioPinValue.High);
pin1.SetDriveMode(GpioPinDriveMode.Output);
}
這樣做是打開引腳,寫入它,然后立即關閉引腳,這可能導致在引腳關閉之前寫入沒有完成。
遺憾的是,我無法在文檔https://docs.microsoft.com/en-us/uwp/api/windows.devices.gpio.gpiopin中找到有關是否立即執行寫入過程的任何內容。
您可以嘗試刪除using語句並稍后手動調用pin1.Dispose()(例如,當您要關閉程序時)
在這種情況下,它看起來像這樣:
GpioPin pin1 = gpio.OpenPin(5);
pin1.Write(GpioPinValue.High);
pin1.SetDriveMode(GpioPinDriveMode.Output);
...
pin1.Dispose();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.