MicroPython 中旋转编码器的使用

MicroPython相关代码、库、软件、工具
回复
头像
shaoziyang
帖子: 2385
注册时间: 2019年 10月 21日 13:48

MicroPython 中旋转编码器的使用

#1

帖子 shaoziyang » 2019年 11月 26日 12:52

原帖作者:microCPyE 发表于 2018-5-3


主题:
旋转编码器在 MicroPython 下的应用


演示环境:
  • 开发板PYB Nano V1.1 
  •  固件版本: MicroPython V1.9.3
  • 模块旋转编码器
编码器引脚PYB Nano 引脚
+3.3
GNDGND
CLKPB0
DTPB1
演示说明:
本次主要演示的是利用旋转编码器的增减计数功能,结合LED的
intensity参数对LED进行调光,设置调光范围为0~255,0为关闭,效果等同于LED(x).off(),255为最亮,效果等同于LED(x).on(),随着旋转编码器的正向、反向的旋转,其编码值也随之不断地变化,从而带动LED灯的亮度在不断地变化,亮度值较低时效果比较明显,较高时不是太明显。

演示代码:

py_encoder.py,encoder.py文件请从下方链接获取:
https://github.com/SpotlightKid/micropy ... er/encoder

 

代码: 全选

# -*- coding: utf-8 -*-

u'''
******************************************************************************
* 文  件:encoder_demo.py
* 概  述:通过旋转编码器控制LED灯亮度
* 版  本:V0.10
* 作  者:Robin Chen
* 日  期:2018年5月3日
* 历  史: 日期             编辑           版本         记录
          2018年5月3日    Robin Chen    V0.10       创建文件
******************************************************************************'''
from time import sleep_ms
from pyb_encoder import Encoder
from pyb import LED

enc = Encoder(pin_clk='B0', pin_dt='B1', pin_mode=4, clicks=2,
                 min_val=0, max_val=255, accel=1, reverse=False)

u'''
*************************************************************************
* 功   能:读取旋转编码值
* 说   明:获取旋转编码器动作后的编码值
* 输入参数:
          enc: Encoder对象
* 输出参数:None
* 返 回 值:
**************************************************************************'''
def readloop(enc):
    oldval = 0
    while True:
        val = enc.value
        if oldval != val:
            print(val)
            oldval = val
        sleep_ms(50)
        LED(1).intensity(val)
        LED(2).intensity(val)
        LED(3).intensity(val)
        LED(4).intensity(val)

readloop(enc)
enc.close()               #关闭对象
 

头像
shaoziyang
帖子: 2385
注册时间: 2019年 10月 21日 13:48

Re: MicroPython 中旋转编码器的使用

#2

帖子 shaoziyang » 2019年 11月 26日 12:53

总结:
  • 这个模块的功能参数什么的都很少。很容易掌握。但有几点需要注意的就是不知道的参数最好不要写,就使用默认值,如果参数功能不能满足自己需要,就要仔细研究模块源码,挖掘源码的潜力;
  • 这个模块共有两个文件,通常情况下,ESP8266的话,只需要引用一个encoder.py即可,使用STM芯片的板子的则需要引用pyb_encoder.py文件,pyb_encoder.py内部又会引用encoder.py文件,所以在STM类的板子这两个文件都要有;
  • 在CLK和DT引脚都设为上拉模式时,旋转编码器的电源+脚可不接。
  • 另外,建议程序结束(包括因错误而中止),执行Encoder.close(),关闭中断和回调函数。

头像
shaoziyang
帖子: 2385
注册时间: 2019年 10月 21日 13:48

Re: MicroPython 中旋转编码器的使用

#3

帖子 shaoziyang » 2019年 11月 26日 12:59

Encoder参数说明:
参数类型默认值描述备注
pin_clk string引脚名 与编码器CLK接口相连
pin_dtstring引脚名 与编码器DT接口相连
pin_modeintNone(PULL_None)
1(PULL_UP)
2(PULL_DOWN)
None 连接引脚模式引脚若处于上拉模式,则可不接+电源
clicks int 1点击具体功能和用法不详
min_val int 0编码最小值
max_valint 100编码最大值
accelint 0旋转加速具体功能和用法不详
reverse boolTrue
False
False 反向(下向+1,反向-1)

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章