# DFRobot_GR10_30
**Repository Path**: dfrobot/DFRobot_GR10_30
## Basic Information
- **Project Name**: DFRobot_GR10_30
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-08-09
- **Last Updated**: 2023-08-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
DFRobot_GR10_30
===========================
* [English Version](./README.md)
SEN0543是一个用于图像分析传感器系统的集成姿态识别传感器。它可以识别10种手势,如上、下、左、右、前、后、圆顺时针、圆逆时针、摆动和悬停。
## 产品链接(https://www.dfrobot.com.cn/goods-3655.html)
SKU:SEN0543
## 目录
* [概述](#概述)
* [库安装](#库安装)
* [方法](#方法)
* [兼容性](#兼容性)
* [历史](#历史)
* [创作者](#创作者)
## 概述
- 最远识别距离30cm
- 可识别12种手势
- 识别阈值参数可配置
- 支持UART、I2C通讯
## 库安装
要使用这个库, 首先下载库文件( https://github.com/DFRobot/DFRobot_GR10_30 )和依赖文件( https://github.com/DFRobot/DFRobot_RTU ), 将其粘贴到\Arduino\libraries目录中, 然后打开示例文件夹并在文件夹中运行演示。
## 方法
```C++
/**
* @fn begin
* @brief Init SEN0543 device
* @return Return value init status
* @retval 0 Succeed
* @retval -1 Failed
*/
int8_t begin(void);
/**
* @fn enGestures
* @brief 设置模块可以识别什么手势,才触发中断
* @param gestures
* GESTURE_UP
* GESTURE_DOWN
* GESTURE_LEFT
* GESTURE_RIGHT
* GESTURE_FORWARD
* GESTURE_BACKWARD
* GESTURE_CLOCKWISE
* GESTURE_COUNTERCLOCKWISE
* GESTURE_WAVE It is not suggested to enable rotation gesture (CW/CCW) and wave gesture at the same time.
* GESTURE_HOVER Disable other gestures when hover gesture enables.
* GESTURE_UNKNOWN
* GESTURE_CLOCKWISE_C // 连续正转
* GESTURE_COUNTERCLOCKWISE_C // 连续反转
* @return NONE
*/
void enGestures(uint16_t gestures);
/**
* @fn setUdlrWin
* @brief 设置上下左右感兴趣的窗口
* @param udSize 上下的距离 距离范围 1-30
* @param lrSize 左右的距离 距离范围 1-30
* @return NONE
*/
void setUdlrWin(uint8_t udSize, uint8_t lrSize);
/**
* @fn setLeftRange
* @brief 设置向左滑动多少距离才能识别
* @param range
* @n 距离范围 5-25,必须小于感兴趣的左右距离
* @return NONE
*/
void setLeftRange(uint8_t range);
/**
* @fn setRightRange
* @brief 设置向右滑动多少距离才能识别
* @param range
* @n 距离范围 5-25,必须小于感兴趣的左右距离
* @return NONE
*/
void setRightRange(uint8_t range);
/**
* @fn setUpRange
* @brief 设置向上滑动多少距离才能识别
* @param range
* @n 距离范围 5-25,必须小于感兴趣的上下距离
* @return NONE
*/
void setUpRange(uint8_t range);
/**
* @fn setDownRange
* @brief 设置向下滑动多少距离才能识别
* @param range
* @n 距离范围 5-25,必须小于感兴趣的上下距离
* @return NONE
*/
void setDownRange(uint8_t range);
/**
* @fn setForwardRange
* @brief 设置向前移动多少距离才能识别
* @param range
* @n 距离范围 1-15
* @return NONE
*/
void setForwardRange(uint8_t range);
/**
* @fn setBackwardRange
* @brief 设置向后移动多少距离才能识别
* @param range
* @n 距离范围 1-15
* @return NONE
*/
void setBackwardRange(uint8_t range);
/**
* @fn setWaveNumber
* @brief 设置挥手多少次才能识别
* @param number
* @n 次数范围 1-15
* @return NONE
*/
void setWaveNumber(uint8_t number);
/**
* @fn setHovrWin
* @brief 设置悬停感兴趣的窗口
* @param udSize 上下的距离 距离范围 1-30
* @param lrSize 左右的距离 距离范围 1-30
* @return NONE
*/
void setHovrWin(uint8_t udSize, uint8_t lrSize);
/**
* @fn setHovrTimer
* @brief 设置悬停多少时间才能触发手势
* @param timer
* @n timer 1-200 10ms-2s 默认为 60 600ms
* @return NONE
*/
void setHovrTimer(uint16_t timer);
/**
* @fn setCwsAngle
* @brief 设置顺时针旋转多少角度才能触发手势
* @param count 默认为 16 范围1-31
* @n count 旋转的度数为22.5 * count
* @n 例: count = 16 22.5*count = 360 旋转360度触发手势
* @return NONE
*/
void setCwsAngle(uint8_t count);
/**
* @fn setCcwAngle
* @brief 设置逆时针旋转多少角度才能触发手势
* @param count 默认为 16 范围1-31
* @n count 旋转的度数为22.5 * count
* @n 例: count = 16 22.5*count = 360 旋转360度触发手势
* @return NONE
*/
void setCcwAngle(uint8_t count);
/**
* @fn setCwsAngleCount
* @brief 设置顺时针连续旋转多少角度才能触发手势
* @param count 默认为 4 范围1-31
* @n count 连续旋转的度数为22.5 * count
* @n 例: count = 4 22.5*count = 90
* @n 先触发顺/逆时针旋转手势, 当还继续旋转时, 每90度触发一次连续旋转手势
* @return NONE
*/
void setCwsAngleCount(uint8_t count);
/**
* @fn setCcwAngleCount
* @brief 设置逆时针连续旋转多少角度才能触发手势
* @param count 默认为 4 范围1-31
* @n count 连续旋转的度数为22.5 * count
* @n 例: count = 4 22.5*count = 90
* @n 先触发顺/逆时针旋转手势, 当还继续旋转时, 每90度触发一次连续旋转手势
* @return NONE
*/
void setCcwAngleCount(uint8_t count);
/**
* @fn getExist
* @brief 获取物体是否在传感器检测范围内
* @return 是否存在
* @retval 1 存在
* @retval 0 不存在
*/
uint16_t getExist(void);
/**
* @fn getDataReady
* @brief 获取是否检测到手势了
* @return 是否检测到手势
* @retval 1 检测到手势
* @retval 0 未检测到手势
*/
uint16_t getDataReady(void);
/**
* @fn getGesturesState
* @brief 获取手势类型
* @return 手势类型
* @retval GESTURE_UP
* @retval GESTURE_DOWN
* @retval GESTURE_DOWN
* @retval GESTURE_LEFT
* @retval GESTURE_RIGHT
* @retval GESTURE_FORWARD
* @retval GESTURE_BACKWARD
* @retval GESTURE_CLOCKWISE
* @retval GESTURE_COUNTERCLOCKWISE
* @retval GESTURE_WAVE
* @retval GESTURE_HOVER
* @retval GESTURE_UNKNOWN
* @retval GESTURE_CLOCKWISE_C
* @retval GESTURE_COUNTERCLOCKWISE_C
*/
uint16_t getGesturesState(void);
```
## 兼容性
MCU | SoftwareSerial | HardwareSerial | IIC |
------------------ | :----------: | :----------: | :----------: |
Arduino Uno | √ | X | √ |
Mega2560 | √ | √ | √ |
Leonardo | √ | √ | √ |
ESP32 | X | √ | √ |
ESP8266 | √ | X | √ |
micro:bit | X | X | √ |
FireBeetle M0 | X | √ | √ |
raspberry | X | √ | √ |
## 历史
- 2022-07-26 - 1.0.0 版本
## 创作者
Written by zhixinliu(zhixinliu@dfrobot.com), 2021. (Welcome to our [website](https://www.dfrobot.com/))