簡體   English   中英

Raspberry pi c上的GPIO#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM