8937|0

2942

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

树莓派windows iot 开发(三) 闪烁的LED [复制链接]

目录


树莓派windows iot 开发(一)

树莓派windows iot 开发(二) USB摄像机

树莓派windows iot 开发(三) 闪烁的LED

树莓派windows iot 开发(四) UART接口

树莓派windows iot 开发(五) SPI接口

 

 

树莓派windows iot开发(三)闪烁的LED


 

首先需要准备的材料:

树莓派开发板3B一块,还有电源、网线、显示器、鼠标等等主要设备;

实验项目材料:

一个电阻1K欧姆,和LED灯一个,杜邦导线两条。

我只是简单的做个实验,也没必要非弄个“面包板”

然后到网站上下载资料。

https://docs.microsoft.com/en-us/samples/microsoft/windows-iotcore-samples/hello-blinky/

根据扩展端口开始连线,项目中的电源是选择的3.3V电源,板子上也可以是5V。我选择的是3.3V。

输出引脚选择的是“GPIO 5”作为输出。

将项目用VS2019打开。

配置好远程主机。

就可以开始试着运行了。程序启动后,可以看到led灯不停的闪烁。与屏幕上红色亮点是同步的。

其实这个项目没有什么难度,只是能够证明windows 也可以用来做控制用。记得公司使用PC104来开发项目,那时主要的考虑是因为intel cpu的计算能力比较强。因为系统中的仪器需要比较复杂的计算。看来使用树莓派这种板子也是可以的。而且价格也是PC104不能比的。下面分析一下代码:

 
   public sealed partial class MainPage : Page
    {
        private const int LED_PIN = 5;
        private GpioPin pin;
        private GpioPinValue pinValue;
        private DispatcherTimer timer;
        private SolidColorBrush redBrush = new SolidColorBrush(Windows.UI.Colors.Red);
        private SolidColorBrush grayBrush = new SolidColorBrush(Windows.UI.Colors.LightGray);

        public MainPage()
        {
            InitializeComponent();

            timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromMilliseconds(500);
            timer.Tick += Timer_Tick;
            InitGPIO();
            if (pin != null)
            {
                timer.Start();
            }        
        }

        private void InitGPIO()
        {
            var gpio = GpioController.GetDefault();

            // Show an error if there is no GPIO controller
            if (gpio == null)
            {
                pin = null;
                GpioStatus.Text = "There is no GPIO controller on this device.";
                return;
            }

            pin = gpio.OpenPin(LED_PIN);
            pinValue = GpioPinValue.High;
            pin.Write(pinValue);
            pin.SetDriveMode(GpioPinDriveMode.Output);

            GpioStatus.Text = "GPIO pin initialized correctly.";

        }
   
        private void Timer_Tick(object sender, object e)
        {
            if (pinValue == GpioPinValue.High)
            {
                pinValue = GpioPinValue.Low;
                pin.Write(pinValue);
                LED.Fill = redBrush;
            }
            else
            {
                pinValue = GpioPinValue.High;
                pin.Write(pinValue);
                LED.Fill = grayBrush;
            }
        }

第一步:初始化设备

           var gpio = GpioController.GetDefault();

这是个函数是让驱动程序初始化一下。接下来判断一下是否成功。因为有些设备不一定有GPIO驱动。尤其是intel的有些主板。

           pin = gpio.OpenPin(LED_PIN);
           pinValue = GpioPinValue.High;
           pin.Write(pinValue);
           pin.SetDriveMode(GpioPinDriveMode.Output);

打开GPIO5,设置默认输出,在定义GPIO为输出。

利用pin.Write(pinValue);函数设置引脚的电平。

           pinValue = GpioPinValue.High;
           pin.Write(pinValue);

利用windows丰富的图形界面可以做出很多不错的程序。

此内容由EEWORLD论坛网友bigbat原创,如需转载或用于商业用途需征得作者同意并注明出处

 

breadboard_assembled_rpi2_kit.jpg (325.49 KB, 下载次数: 0)

breadboard_assembled_rpi2_kit.jpg
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表