在此项目中,您将使用适用于 Raspberry Pi 2 组件上的 Windows 10 IoT Core 的 Adafruit 入门包来创建一个项目,该项目会根据 Web API 调用的响应使 LED 闪烁。
按照页面底部的 Fritzing 图将 Raspberry Pi2 连接到面包板和其他组件。
注意:LED 引脚已从之前的Blinky 示例从 GPIO 5 更改为 GPIO 18。
您可以从https://github.com/ms-iot/adafruitsample下载代码启动项目,我们将引导您完成添加与 Web 服务对话并在地图上获取您的 pin 所需的代码。什么地图?
打开“Lesson_201\StartSolution\Lesson_201.sln ”并打开 MainPage.xaml.cs 文件。
我们已经填写了一些方法作为您在此解决方案中的起点。如果你想跳到前面,你可以在以下位置找到所有代码已完成的解决方案:“Lesson_201\FullSolution\Lesson_201.sln”
在 MainPage 类的顶部添加以下行。这些定义了您将用于控制 LED 的 Pi2 上的哪个引脚以及对您将很快添加的 InternetLed 类的引用。
密封部分 : { GPIOToUse = ; InternetLed ernetLed; 主页()
现在在 OnNavigatedTo 方法中添加代码,它将:
如果您不想在地图上添加图钉,请删除MakePinWebAPICall();
protected override async void { 调试。 ; ; { internetLed = ; internetLed。; blinkDelay = await internetLed. ; ( i = ; i < ; i++) { 互联网主导。 ; 等待任务。; } } 抓住(例外 e) { 调试。 ; } }
现在您将添加一个新的类文件,其中大部分工作将实际执行。
从主菜单中选择项目->添加类...
添加新项对话框将打开并默认为 Visual C# 类。
输入InternetLed.cs作为文件名,然后单击添加
将为您创建并打开类文件。
更新使用的
您需要替换文件顶部的 using 部分,以便代码可以引用 GPIO 设备、Web 界面和系统诊断。
; 。; .Net.Http; ; Windows.Devices.Gpio; 命名空间 Lesson_201 {
班级成员
在类括号内添加以下行,稍后代码将引用这些行。
{ GpioController gpio; GpioPin LedControlGPIOPin; LedControlPin; DefaultBlinkDelay = ; eLedState { Off, On }; eLedState _LedState;
类构造器
现在,添加将存储用于控制 LED 的引脚值的类构造函数代码。
公共 { 调试。 ; LedControlPin = ledControlPin; }
初始化成员
添加初始化代码,它负责设置与 Pi2 通用输入输出 (GPIO) 控制器的通信。
公共无效
{
调试。 ;
gpio = GpioController。 ;
LedControlGPIOPin = gpio. ;
LedControlGPIO引脚。 ;
GpioPinValue startingValue = LedControlGPIOPin. ;
_LedState = (startingValue GpioPinValue.Low) ? eLedState.On : eLedState.Off;
}
LedState 属性
这将与 led 状态(开与关)的交互包装到一个中央位置。
//LED交互的属性。 eLedState LedState { {_LedState; } { .WriteLine("InternetLed::LedState::set " + .ToString()); (LedControlGPIOPin != ) { GpioPinValue newValue = ( == eLedState.On GpioPinValue.High : GpioPinValue.Low); LedControlGPIO引脚。(新值); _LedState =; } } }
眨眼法
添加处理更改 LED 状态的方法。
// 将 LED 的状态从 ) { == eLedState.On ) { LedState = eLedState。; } { LedState = eLedState。; } }
GetBlinkDelayFromWeb 方法
这是该类的主要工作完成的地方。
首先设置 HttpClient 调用,然后执行它。然后将返回的字符串输出到调试通道中,这样就可以看到了。
接下来,我们确定延迟的值是多少并返回它。
WebAPIURL = ;
{
Debug.WriteLine( );
responseString = ;
{
( client = ())
{
responseString = await client.GetStringAsync(WebAPIURL);
Debug.WriteLine( .Format( , responseString));
}
}
(例外 e)
{
Debug.WriteLine(e.Message);
}
;
(! .TryParse(responseString, out ))
{
= DefaultBlinkDelay;
}
;
}
}
}
输入所有代码后,您可以构建解决方案并在 Pi2 上运行代码。如果需要,您可以查看有关如何在 PI 上连接和运行代码的说明,重新访问第 1 课 - Blinky。
打开 Visual Studio 的输出选项卡。如果需要在主菜单上使用Debug -> Window -> Output
现在您可以观察 Debug.WriteLine 命令的输出。
查找以“Response string:”开头的消息,随后将在“[]”方括号中包含来自 Web API 的响应。
MainPage::OnNavigatedTo InternetLed::新InternetLed InternetLed::InitalizeLed InternetLed::MakeWebApiCall 响应:[ ] InternetLed::LedState 关闭
闪烁的 LED
此时,您的 LED 应该根据从 Web API 返回的时间字符串的值大约每秒闪烁一次。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !