完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
基本介绍
Rotation Sensor是一款增量编码器,是一种将旋转位移转换为一连串数字脉冲信号的旋转式传感器。通过旋转可以计数正方向和反方向转动过程中输出脉冲的次数,旋转计数不像电位器,这种转动是没有限制的。配合旋转编码器上的按键,可以复位到初始状态,即从0开始计数,主要用于工业中的定位问题。 |
|
|
|
硬件连接
在硬件上,采用Micro:bit的P0,P1,P2分别与Rotation Sensor的SIA,SIB,SW连接,具体连接示意图如下图所示: 具体硬件连接如下表所示: |
|
|
|
计数原理
将Rotation Sensor的SIA,SIB,SW分别连接到逻辑分析仪的CH0,CH1,CH2,分别顺时针,逆时针,按下旋转编码器,同时采集波形,得到的波形如下图所示: 由逻辑分析仪得出的波形可知,当顺时针旋转编码器时,SIB将先产生下降沿,约过了30ms之后(取决于旋转的速度),SIA将产生下降沿;当逆时针旋转编码器时,SIA将先产生下降沿,约过了30ms之后(取决于旋转的速度),SIB将产生下降沿,对SIA,SIAB共同产生的下降沿个数进行统计,即可得知此次旋转的角度,当按下按键时,SW将产生下降沿,此按键可用于清零旋转的角度。 |
|
|
|
软件设计
打开makecode,采用图形块编写以下程序(不用添加软件包): 该程序的JavaScript代码如下所示,可直接复制至makecode使用: cpp代码: 01let time = 0 02let item = 0 03let count = 0 04pins.onPulsed(DigitalPin.P1, PulseValue.Low, () =》 { 05 if (input.runningTime() - time 》 50) { 06 time = input.runningTime() 07 count = count + 1 08 } 09 time = input.runningTime() 10 serial.writeValue(“press”, 0) 11}) 12pins.onPulsed(DigitalPin.P0, PulseValue.Low, () =》 { 13 if (input.runningTime() - time 》 50) { 14 time = input.runningTime() 15 count = count - 1 16 } 17 time = input.runningTime() 18 serial.writeValue(“press”, 0) 19}) 20pins.onPulsed(DigitalPin.P2, PulseValue.Low, () =》 { 21 count = 0 22 serial.writeValue(“press”, 1) 23}) 24count = 0 25item = 0 26time = input.runningTime() 27pins.setPull(DigitalPin.P0, PinPullMode.PullUp) 28pins.setPull(DigitalPin.P1, PinPullMode.PullUp) 29pins.setPull(DigitalPin.P2, PinPullMode.PullUp) 30serial.redirectToUSB() 31basic.forever(() =》 { 32 while (item != count) { 33 item = count 34 serial.writeValue(“item”, item) 35 } 36 basic.pause(500) 37}) 下载,等下载成功后,点击显示数据(设备),依次顺时针旋转Rotation Sensor,逆时针旋转Rotation Sensor,按下Rotation Sensor,可得如下波形的数据: 由makecode控制台显示的数据可知,当旋钮顺时针旋转时,每转一个刻度,item变量将加1,当旋钮逆时针旋转时,每转一个刻度,item变量将减1,当按下旋钮时,item数据将归零,符合预期。 |
|
|
|
只有小组成员才能发言,加入小组>>
663 浏览 0 评论
1083 浏览 1 评论
2454 浏览 5 评论
2782 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2618 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
638浏览 9评论
636浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
765浏览 6评论
610浏览 5评论
651浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 09:20 , Processed in 1.186890 second(s), Total 87, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号