# DFRobot_VisualRotaryEncoder
**Repository Path**: dfrobot/DFRobot_VisualRotaryEncoder
## Basic Information
- **Project Name**: DFRobot_VisualRotaryEncoder
- **Description**: 这是一款使用简单的旋转编码器。使用了Gravity-I2C接口输出数据。与常规的电位器相比,它有更好的手感,更高的精度,旋转步进精度可设置。并且,有一圈LED显示当前的值,形象直观。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-11-10
- **Last Updated**: 2022-05-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# DFRobot_VisualRotaryEncoder
- [English Version](./README.md)
这是一款使用简单的旋转编码器。使用了Gravity-I2C接口输出数据。与常规的电位器相比,它有更好的手感,更高的精度,旋转步进精度可设置。并且,有一圈LED显示当前的值,形象直观。
可用做音量调节,火力调节,转速调节 ;级联3个旋转编码器,可调节RGB灯的输出状态。

## 产品链接 (https://www.dfrobot.com.cn/goods-3516.html)
SKU: SEN0502
## 目录
* [概述](#概述)
* [库安装](#库安装)
* [方法](#方法)
* [兼容性](#兼容性)
* [历史](#历史)
* [创作者](#创作者)
## 概述
* I2C数据输出,正转加1,反转减1,使用简单明了。
* 环形LED灯显示当前的值,漂亮直观。
* 2个I2C端口输出,可级联使用。
## 库安装
这里有2种安装方法:
1. 使用此库前,请首先下载库文件,将其粘贴到\Arduino\libraries目录中,然后打开examples文件夹并在该文件夹中运行演示。
2. 直接在Arduino软件库管理中搜索下载 DFRobot_VisualRotaryEncoder 库。
## 方法
```C++
/**
* @fn begin
* @brief 初始化函数
* @return int类型, 表示返回初始化的状态
* @retval 0 NO_ERROR
* @retval -1 ERR_DATA_BUS
* @retval -2 ERR_IC_VERSION
*/
virtual int begin(void);
/**
* @fn refreshBasicInfo
* @brief 重新从传感器获取其基本信息, 并缓存到存储信息的结构体basicInfo里面
* @n basicInfo结构体的成员: PID, VID, version, i2cAddr
* @return None
*/
void refreshBasicInfo(void);
/**
* @fn getEncoderValue
* @brief 获取编码器当前计数值
* @return 返回值范围为: 0-1023
*/
uint16_t getEncoderValue(void);
/**
* @fn setEncoderValue
* @brief 设置编码器计数值
* @param value 范围[0, 1023], 超出范围设置无效
* @return None
*/
void setEncoderValue(uint16_t value);
/**
* @fn getGainCoefficient
* @brief 获取编码器当前增益系数,转动一格的数值精度。
* @n 精度范围:1~51, 最小为1(转动约2.5圈LED灯亮一个), 最大为51(转动一格LED灯就亮起一个)
* @return 返回值范围为: 1-51
*/
uint8_t getGainCoefficient(void);
/**
* @fn setGainCoefficient
* @brief 设置编码器增益系数,转动一格的数值精度。
* @n 精度范围:1~51,最小为1(转动约2.5圈LED灯亮一个),最大为51(转动一格LED灯就亮起一个)
* @param gainValue 范围[1, 51], 超出范围设置无效
* @return None
*/
void setGainCoefficient(uint8_t gainValue);
/**
* @fn detectButtonDown
* @brief 检测按键是否已按下
* @return 返回按键状态
* @retval true 已检测到按键按下
* @retval false 未检测到按键按下
*/
bool detectButtonDown(void);
```
## 兼容性
MCU | Work Well | Work Wrong | Untested | Remarks
------------------ | :----------: | :----------: | :---------: | :---:
Arduino Uno | √ | | |
Arduino MEGA2560 | √ | | |
Arduino Leonardo | √ | | |
FireBeetle-ESP8266 | √ | | |
FireBeetle-ESP32 | √ | | |
FireBeetle-M0 | √ | | |
## 历史
- 2021/09/17 - 1.0.0 版本
- 2022/05/20 - 1.0.1 版本
## 创作者
Written by(yihuan.huang@dfrobot.com), 2022. (Welcome to our [website](https://www.dfrobot.com/))