Windows10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行。

上一篇文章我们详细介绍了Raspberry安装Win10 IoT Core系统及搭建开发环境的过程,如果还不熟悉安装搭建过程可以参考  Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境(http://blog.csdn.net/wingzero226/article/details/51627911)。

这次要通过对Pin的操作来模拟交通灯的切换,流程很简单。首先红灯亮起 -> 红灯10秒后熄灭 -> 黄灯亮起 -> 黄灯3秒后熄灭 -> 绿灯亮起 -> 绿灯10秒后熄灭,然后开始下一个循环。每次灯亮时会向远程服务器推送当前哪盏灯亮的消息。

准备工作:

刷好Win10 IoT Core系统的 Raspberry Pi 2

部署Visual Studio 2015开发环境的PC

红,黄,绿 3种颜色的发光二极管

220R电阻

GPIO扩展板

IDC排线

杜邦线

面包板

1.安装元器件

首先将 GPIO扩展板 安装到面包板上,再通过 IDC排线 与 Raspberry Pi 2 的 GPIO 接口连接。

下面开始连接发光二极管,为了保证二极管不被烧坏需要加装限流电阻,我们假定三种二极管的压降均是1.8V,额定电流15mA,通过公式可以算出213.3Ω=(5V-1.8V)/0.015A , 所以我们选用220R的电阻。

发光二极管引脚长的一端为正极与5V电源相联,中间加装220R的电阻。红色的负极与GPIO21连接,黄色的负极与GPIO25连接,绿色的负极与GPIO20连接。

2.编写代码

打开 Visual Studio 2015创建 IoT 项目,将发光二极管的控制功能封装到一个名为LED的类中,该类包含两个主要方法,Open方法点亮二极管,Close方法熄灭二极管。主进程通过LED控制类的红,黄,绿三个实例来操作发光二极管的循环切换,每次切换时使用HttpClient向远程服务器推送消息。

完整代码:

namespace CloudTechIot2
{  //http://blog.csdn.net/wingzero226public sealed class StartupTask : IBackgroundTask{public void Run(IBackgroundTaskInstance taskInstance){//初始化Pinsvar pins = new LED[] { new LED(Colors.Red, 10), new LED(Colors.Yellow, 3), new LED(Colors.Green, 10) };//循环while (true){//依次操作LEDforeach (var pin in pins){pin.Open();//通知远程服务器LED的切换SendMsg(pin.Color.ToString());//持续时间(秒)Task.Delay(TimeSpan.FromSeconds(pin.Interval)).Wait();pin.Close();}}}//输出结果private void SendMsg(string res){//打印Debug.WriteLine(res);//推送到服务器HttpClient httpClient = new HttpClient();//服务器程序地址及端口192.168.1.5:8099httpClient.GetAsync(new Uri(string.Format("http://192.168.1.5:8099/{0}", res)));}}//LED颜色public enum Colors : int{Red = 21,Yellow = 25,Green = 20}//LED控制类public sealed class LED{//GPIOprivate static GpioController _gpio;private Colors _color;//颜色public Colors Color{get{return _color;}}private GpioPin _pin;//Pinpublic GpioPin Pin{get{return _pin;}}private ushort _interval;//持续时间public ushort Interval{get{return _interval;}}//创建Pinpublic LED(Colors led, ushort interval){_color = led;_pin = _gpio.OpenPin((int)_color);_pin.SetDriveMode(GpioPinDriveMode.Output);_interval = interval;}//初始化GPIOstatic LED(){_gpio = GpioController.GetDefault();if (null == _gpio){throw new Exception("GPIO initial failed");}}//打开LEDpublic void Open(){_pin.Write(GpioPinValue.Low);}//关闭LEDpublic void Close(){_pin.Write(GpioPinValue.High);}}
}

3.调试代码

这里我们用Nodejs写了一个模拟服务器的程序,监听8099端口接收IoT设备推送来的消息并打印到Console中,在PC (IP:192.168.1.5) 上启动该程序开始监听。

接通Raspberry电源,等待 Win 10 IoT Core 启动结束后使用Remote Machine部署我们刚才写的程序。

程序运行后发光二极管按照我们的流程开始依次切换,红灯亮起 -> 红灯10秒后熄灭 -> 黄灯亮起 -> 黄灯3秒后熄灭 -> 绿灯亮起 -> 绿灯10秒后熄灭,然后开始下一个循环。

每一次切换的同时,服务器收到了IoT设备推送的切换通知。

到这里通过GPIO控制发光二级管切换及推送通知的过程就完成了,如果对代码有优化的建议,欢迎留言或发邮件给我(librastarwing@hotmail.com)。也可以加我的微信号查看以前的文章。

Win10 IoT C#开发 3 - UART 串口通信(http://blog.csdn.net/wingzero226/article/details/51474161)

Win10 IoT C#开发 2 - GPIO Pin 控制发光二极管相关推荐

  1. Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境

    原文:Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同, ...

  2. win10 iot core java_Windows 10 IoT Core开发环境

    Windows 10 IoT Core开发环境 Windows 10 IoT Core开发语言主要使用C#,所以我们选择Visual Studio 2017作为主要开发环境. 一.确认操作系统 微软要 ...

  3. 游历 JavaScript IoT 应用开发平台

    物联网(Internet of Things,简称IoT)时代的脚步声已经越来越响亮,每个程序员都希望跟上时代的步伐,不为时代浪潮所淘汰.面对IoT这个纷争初起的领域,程序员们该何去何从?本文将带领诸 ...

  4. 【嵌入式开发】LED 驱动 ( LED发光二极管原理 | 底板原理图分析 | 核心板原理图分析 | GPIO | 裸板程序烧写流程 )

    文章目录 开发板 的 LED 灯 作用 : 嵌入式软件的开发初期, 如 开发 BootLoader 代码 或者 Kernel 内核代码 过程中, 有效的调试方法有限, 此时通常使用 开发板上的 LED ...

  5. android bootloader阶段GPIO的控制

    Linux bootloader阶段GPIO的控制 1.    Bootloader阶段 (1)  gpio_tlmm_config()GPIO_CFGn寄存器的配置. #define TLMM_VO ...

  6. raspberry pi_使用Raspberry Pi和GPIO引脚控制外部LED

    raspberry pi by Shahbaz Ahmed Shahbaz艾哈迈德(Shahbaz Ahmed) 使用Raspberry Pi和GPIO引脚控制外部LED (Controlling a ...

  7. 漫谈LiteOS之开发板-GPIO(基于GD32450i-EVAL)

    [摘要] 本文主要从GPIO的定义.工作模式.特色.工作场合.以及GD32450i-EVAL开发板的引脚.对应的寄存器以及GPIO的流水灯示例对GPIO加以介绍,希望对你有所帮助. 1定义 GPIO( ...

  8. win10iot c语言,值还是不值?——树莓派3 Win10 IoT系统体验

    爱板网正在举办e络盟杯树莓派创意设计大赛,以树莓派3B和创意设计为主题,大赛e络盟官方会根据参赛者填写的申请理由,选取50名幸运儿赠送500元e络盟商城购物基金用于领取大赛项目所需器件,欢迎感兴趣的朋 ...

  9. 嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)

    嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析) 首先声明该博客是针对朱有鹏老师的嵌入式课程进行笔记的总结. 一.通过GPIO控制点亮LED( ...

最新文章

  1. 超越卷积、自注意力机制:强大的神经网络新算子involution
  2. 详解模板注入漏洞(下)
  3. Win7下共享文件(以及凭据管理简单介绍)
  4. Nginx:HTTP框架是如何介入请求
  5. vue - v-if 注意点
  6. 关于REST API设计的一些小经验
  7. Ollydbg中F8的Bug
  8. 设计灵感|简单的几何图形还能这么用在网页设计中!
  9. visual studio 自带的 宏 没反应_横山宏科幻动漫模型:插图造型怪异的胡佛战车欣赏...
  10. params 有什么用?
  11. 乘法逆元 -- 模运算不满足分配律
  12. atitit.插件体系设计总结o73.doc
  13. Loading 加载中 图片素材
  14. 先电OpenStack创建云主机报错500
  15. html和css如何制作小球,雨林寒舍 | CSS3制作3D跳动的小球
  16. 手把手教学linux上扩容和缩减swap分区。
  17. OneZero第四次站立会议(2016.3.24)
  18. C++笔试笔记1(4399 西山居 深信服 剑心互娱 快手)
  19. MOSFET的SOA或者ASO是什么?
  20. 【考研】2022暨南大学848 电子信息(计算机技术) 经验贴 经验贴汇总

热门文章

  1. 计算机单位pt,iOS尺寸单位pt、ppi与px之间换算关系
  2. tkmybatis 子查询_【10/21】南池袋送餐桌和椅子 收纳盒子 洗衣机 | 下落合站送洗衣机...
  3. 恢复出厂设置,保留数据的方法
  4. 优缺点 快速扫描 硬盘监测_有了这6款mac硬盘检测工具 你就能够快速检测磁盘的状态和错误情况...
  5. 【C语言编程--水仙花数II】
  6. 《Photoshop+Lightroom数码摄影后期处理经典教程》—第1章1.5节准备将Lightroom和Photoshop结合起来...
  7. 艺术字生成工具 | Mixlab创意编程
  8. 富途证券面试整理--前端
  9. react加水印_多功能React影像组件(拖拽、水印、缩放、切换、旋转)
  10. 双分支定向耦合器 HFSS仿真