当前位置:
首页 > Python基础教程 >
-
张高兴的 Windows 10 IoT 开发笔记:HC-SR04 超声波测
HC-SR04 采用 IO 触发测距。下面介绍一下其在 Windows 10 IoT Core 环境下的用法。
项目运行在 Raspberry Pi 2/3 上,使用 C# 进行编码。
1. 准备
HC-SR04 ×1
Raspberry Pi 2/3 ×1
公母头杜邦线 ×4
2. 连线
Vcc - 5V
Gnd - GND
Trig - GPIO 17 - Pin 11
Echo - GPIO 27 - Pin 13
3. 代码
GitHub : https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/HC_SR04Demo
你需要在项目中添加一个 C# 代码文件 HCSR04.cs,将下面的代码复制粘贴,并且不要忘记添加引用 Windows IoT Extensions for the UWP
using System.Diagnostics; using System.Threading.Tasks; using Windows.Devices.Gpio; namespace HC_SR04Demo { class HCSR04 { private int sensorTrig; private int sensorEcho; private GpioPin pinTrig; private GpioPin pinEcho; Stopwatch time = new Stopwatch(); /// <summary> /// Constructor /// </summary> /// <param name="trig">Trig Pin</param> /// <param name="echo">Echo Pin</param> public HCSR04(int trig, int echo) { sensorTrig = trig; sensorEcho = echo; } /// <summary> /// Initialize the sensor /// </summary> public void Initialize() { var gpio = GpioController.GetDefault(); pinTrig = gpio.OpenPin(sensorTrig); pinEcho = gpio.OpenPin(sensorEcho); pinTrig.SetDriveMode(GpioPinDriveMode.Output); pinEcho.SetDriveMode(GpioPinDriveMode.Input); pinTrig.Write(GpioPinValue.Low); } /// <summary> /// Read data from the sensor /// </summary> /// <returns>A double type distance data</returns> public async Task<double> ReadAsync() { double result; pinTrig.Write(GpioPinValue.High); await Task.Delay(10); pinTrig.Write(GpioPinValue.Low); while (pinEcho.Read() == GpioPinValue.Low) { } time.Restart(); while (pinEcho.Read() == GpioPinValue.High) { } time.Stop(); result = (time.Elapsed.TotalSeconds * 34000) / 2; return result; } /// <summary> /// Cleanup /// </summary> public void Dispose() { pinTrig.Dispose(); pinEcho.Dispose(); } } }
4. 如何使用
第一步调用构造函数将 HCSR04 实例化,请传入 Trig 和 Echo 的连接值
第二步调用 Initialize() 初始化设备
第三步调用 ReadAsync() 读取数据,返回的是一个 double 类型的值
当需要关闭设备时,调用 Dispose()
详见 GitHub
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式