一起玩转树莓派(16)——旋转编码传感器

简介: 一起玩转树莓派(16)——旋转编码传感器

旋转编码传感器是一种速度位移传感器。其通过旋钮的旋转来带动内部的光栅盘旋转,光栅盘上会预置很多狭缝,光栅盘的转动导致经过狭缝的光线产生脉冲变化,此信号经过后继电路的处理后,输出成脉冲信号。最终,我们可以通过信号引脚的输出来获取旋钮的旋转动作。


   本次实验,使用的旋转编码传感器如下图所示:



image.png

通过内部发光源与光敏元件的配置,旋转时产生脉冲信号,示意图如下:


image.png


我们使用的传感器有5个引脚,其中除了电源和接地引脚外,还有3个信号引脚。SW引脚为复位信号引脚,此旋转编码传感器本身也是一个按钮,当按下此按钮时,SW引脚会从高电平跳变为低电平。CLK引脚为旋转信号引脚,未旋转时,此引脚输出高电平,旋转时输出低电平。DT引脚用来判定旋转的方向,如果未旋转时此引脚为高电平,旋转时变低电平,则表示发生了顺时针旋转,如果未旋转时此引脚为低电平,发生旋转时此引脚为高电平,则表示发生了逆时针旋转。


   下面,我们来连接树莓派进行实验,接线如下:


旋转编码传感器 树莓派

VCC +5V

GND GND

CLK GPIO17 (BCM编码)

DT GPIO18 (BCM编码)

SW GPIO19 (BCM编码)

编写实验代码如下:


#coding:utf-8


import RPi.GPIO as GPIO

import time


# 定义引脚

resetPin = 35 # BCM编码为19的GPIO 物理编码为35

clkPin = 11

dtPin = 12


# 计数变量

clockwise = 0

anticlockwise = 0


# 进行引脚初始化

GPIO.setmode(GPIO.BOARD)

GPIO.setup(clkPin, GPIO.IN)

GPIO.setup(dtPin, GPIO.IN)

GPIO.setup(resetPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)


# 注册中断函数

def reset(channel):

   global clockwise, anticlockwise

   clockwise = 0

   anticlockwise = 0

   print('计数复位')

# 监听下降沿

GPIO.add_event_detect(resetPin, GPIO.FALLING, callback=reset)


# 开启主循环

while True:  

lastDT = GPIO.input(dtPin)

   # 高电平 没有发生旋转动作

   while GPIO.input(clkPin):

       pass

   # 开始旋转

   currentDT = GPIO.input(dtPin)

   if (lastDT == 1) and (currentDT == 0):

       # 顺时针

       clockwise += 1

       print('顺时针旋转计数:%d'%(clockwise))

   if (lastDT == 0) and (currentDT == 1):

       # 逆时针

       anticlockwise += 1

       print('逆时针旋转计数:%d'%(anticlockwise))


运行代码,效果如下图所示:


image.png


目录
相关文章
|
存储 算法 编译器
【Linux 应用开发 】交叉编译的浮点数处理问题:从表象到底层原理的探索与解决
【Linux 应用开发 】交叉编译的浮点数处理问题:从表象到底层原理的探索与解决
327 1
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
论文推荐:R1-Omni、VisualPRM、4D LangSplat、Vision-R1、GoT
简要介绍:由复旦大学、上海AI实验室等机构提出了首个统一多模态理解和生成的奖励模型UnifiedReward。该工作构建了大规模人类偏好数据集,包含图像和视频生成/理解任务,并利用该模型进行自动构建高质量偏好对数据,最终通过DPO优化视觉模型。实验结果表明,联合学习评估多样化视觉任务可以带来显著的相互益处。
243 1
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
430 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
11月前
|
传感器 芯片
如何在 Arduino 中使用多个 PWM 引脚
在Arduino中使用多个PWM引脚可以实现对多个设备的精确控制。通过设置不同引脚的PWM值,可以调节电机速度、LED亮度等。本文将介绍如何配置和使用多个PWM引脚,实现多任务控制。
|
7月前
|
机器学习/深度学习 人工智能 监控
阿里通义开源全模态大语言模型 R1-Omni:情感分析成绩新标杆!推理过程全程透明,准确率飙升200%
R1-Omni 是阿里通义开源的全模态大语言模型,专注于情感识别任务,结合视觉和音频信息,提供可解释的推理过程,显著提升情感识别的准确性和泛化能力。
933 10
阿里通义开源全模态大语言模型 R1-Omni:情感分析成绩新标杆!推理过程全程透明,准确率飙升200%
|
11月前
|
传感器 监控 物联网
新技术浪潮:物联网与虚拟现实的发展趋势与应用场景###
本文探讨了物联网和虚拟现实技术的发展趋势及其在多个领域的应用场景。物联网通过设备互联和数据驱动,正在改变智能家居、智慧城市和工业自动化等领域。而虚拟现实则以其沉浸式体验和交互性增强,广泛应用于游戏娱乐、教育培训和医疗健康等行业。这两种新兴技术的结合将带来更加智能化和高效的未来社会。 ###
|
缓存 JavaScript 前端开发
/etc/xinetd.d/telnet 配置信息说明
【5月更文挑战第27天】/etc/xinetd.d/telnet 配置信息说明
490 0
|
UED C++ Python
GUI开发入门指南
GUI开发入门指南