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