C# 使用.net core 驱动树莓派的IO信号

如何使用.net core来驱动树莓派的IO信号?是我们的实际项目需求中,可能就会有这种小项目,我们要输出一个IO信号,此处我们拿了树莓派4做测试

 

 一共有两排引脚,引脚的顺序定义及功能如下:

 

 我们就参考两侧的灰色的索引文本就好了,好了,我们来新建项目了,新建一个.Net Core的项目,当然是用最新的VS2019了

 

 

然后安装system.Device.GPIO 库,会附带一些库信息。

然后我们写程序:

        static void Main( string[] args )
        {
            Console.WriteLine( "请输入你要控制的针脚:" );
            int index = int.Parse( Console.ReadLine( ) );

            System.Device.Gpio.GpioController controller = new System.Device.Gpio.GpioController( System.Device.Gpio.PinNumberingScheme.Board );
            if(!controller.IsPinOpen( index ))
            {
                controller.OpenPin( index );
                controller.SetPinMode( index, System.Device.Gpio.PinMode.Output );
            }


            Console.WriteLine( "请选择控制模式?输入1是间隔1秒交替变化,输入2是间隔10秒交替变化,输入3是手动控制变化" );
            int mode = int.Parse( Console.ReadLine( ) );

            if (mode == 1 || mode == 2)
            {
                while (true)
                {
                    Console.WriteLine( "正在写入True值" );
                    controller.Write( index, System.Device.Gpio.PinValue.High );
                    Thread.Sleep( mode == 1 ? 1000 : 10000 );
                    Console.WriteLine( "正在写入False值" );
                    controller.Write( index, System.Device.Gpio.PinValue.Low );
                    Thread.Sleep( mode == 1 ? 1000 : 10000 );
                }
            }
            else
            {
                while (true)
                {
                    Console.WriteLine( "你输入你接下来要写入的值,0代表低电平,1代表高电平" );
                    int value = int.Parse( Console.ReadLine( ) );
                    controller.Write( index, value == 1 ? System.Device.Gpio.PinValue.High : System.Device.Gpio.PinValue.Low );
                }
            }
        }

然后就是发布了,直接发布独立的版本,虽然带了很多的环境,但是省事。

 

 

 

然后把文件都拷贝到树莓派里面

 

 

 

通过万用表的测试发现,树莓派的GPIO针脚的输出为 3.3V  40 ma,驱动能力非常弱。感谢支持。

posted @ 2019-12-09 14:44  dathlin  阅读(2092)  评论(0编辑  收藏