主题:
旋转编码器在 MicroPython 下的应用
演示环境:
- 开发板PYB Nano V1.1
- 固件版本: MicroPython V1.9.3
- 模块旋转编码器
编码器引脚 | PYB Nano 引脚 |
+ | 3.3 |
GND | GND |
CLK | PB0 |
DT | PB1 |
本次主要演示的是利用旋转编码器的增减计数功能,结合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() #关闭对象