mirror of
https://github.com/m5stack/m5-docs.git
synced 2026-05-20 10:23:01 -07:00
165 lines
5.0 KiB
Markdown
165 lines
5.0 KiB
Markdown
# Module ENCODER
|
|
|
|
<el-tag effect="plain">SKU:A006</el-tag>
|
|
|
|
<div class="product_pic"><img src="assets/img/product_pics/module/module_encoder_01.webp"><img src="assets/img/product_pics/module/module_encoder_02.webp"></div>
|
|
|
|
## Description
|
|
|
|
**ENCODER** is compatible with FACE Kit. You can have it replace the key-card panel inside the FACE kit. It is designed for rotary encoder control, integrated Mega328 microprocessor inside and LEDs around the encoder.
|
|
|
|
The series communication protocol between M5 core and ENCODER is I2C (The default I2c address is: 0x5E)
|
|
|
|
<img src="assets/img/product_pics/module/module_encoder_03.webp" width="60%" height="60%">
|
|
|
|
## Product Features
|
|
|
|
- 12 RGB Led
|
|
- I2C communication
|
|
- Simple API for programming
|
|
- Mega328 inside
|
|
- Encoder detection
|
|
|
|
## Include
|
|
|
|
- 1x M5Stack ENCODER Module
|
|
|
|
## Specification
|
|
|
|
<table>
|
|
<tr style="font-weight:bold">
|
|
<td>Resources</td>
|
|
<td>Parameter</td>
|
|
</tr>
|
|
<tr>
|
|
<td>RGB LED</td>
|
|
<td>x12</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Net weight</td>
|
|
<td>27g</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Gross weight</td>
|
|
<td>47g</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Product Size</td>
|
|
<td>58.2*54.2*28mm</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Package Size</td>
|
|
<td>95*65*25mm</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Material</td>
|
|
<td>Plastic(PC)</td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
## EasyLoader
|
|
|
|
>EasyLoader is a concise and fast program writer, which has a built-in case program related to the product. It can be burned to the main control by simple steps to perform a series of function verification. Please install the corresponding driver according to the device type. M5Core host [Please click here to view the CP210X driver installation tutorial](en/arduino/arduino_development), M5StickC/V/T/ATOM series can be used without driver)
|
|
|
|
<div class="easyloader-box">
|
|
<div style="background-color:white;">
|
|
<div><img src="https://m5stack.oss-cn-shenzhen.aliyuncs.com/image/easyloader_intro.webp"></div>
|
|
<div class="easyloader-btn">
|
|
<a href="https://m5stack.oss-cn-shenzhen.aliyuncs.com/EasyLoader/Windows/MODULE/EasyLoader_FACES_Encoder.exe">Windows</a>
|
|
<a href="https://m5stack.oss-cn-shenzhen.aliyuncs.com/EasyLoader/MacOS/MODULE/EasyLoader_FACES_Encoder_0x1000.dmg">MacOS</a>
|
|
<!-- <a>Linux</a>
|
|
<a>MacOS</a> -->
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<video id="example_video" controls>
|
|
<source src="https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Product_example_video/Module/FACES_ENCODER.mp4" type="video/mp4">
|
|
</video>
|
|
<div class="easyloader-mask">
|
|
<a>
|
|
<svg id="play-btn" t="1583228776634" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4152" width="75" height="75"><path d="M512 0C229.216 0 0 229.216 0 512s229.216 512 512 512 512-229.216 512-512S794.784 0 512 0z m0 928C282.24 928 96 741.76 96 512S282.24 96 512 96s416 186.24 416 416-186.24 416-416 416zM384 288l384 224-384 224z" p-id="4153" fill="#007aff"></path></svg></a>
|
|
<p>Description:</p>
|
|
<p>Display encoder count and button status, left turn decrease right turn increase.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
## Function
|
|
|
|
**Control single RGB**
|
|
|
|
```clike
|
|
/*
|
|
Parameter:
|
|
led_index: 0 ~ 11
|
|
r, g, b: 0 ~ 254
|
|
*/
|
|
void Led(int led_index, int r, int g, int b){
|
|
// I2C send data
|
|
Wire.beginTransmission(Faces_Encoder_I2C_ADDR);
|
|
Wire.write(led_index);
|
|
Wire.write(r);
|
|
Wire.write(g);
|
|
Wire.write(b);
|
|
Wire.endTransmission();
|
|
}
|
|
```
|
|
|
|
**Read encoder increment**
|
|
|
|
```clike
|
|
void get_encoder_increment(void){
|
|
int temp_encoder_increment;
|
|
|
|
// I2C read data
|
|
Wire.requestFrom(Faces_Encoder_I2C_ADDR, 3);
|
|
if(Wire.available()){
|
|
temp_encoder_increment = Wire.read();// get increment
|
|
button_state = Wire.read();// get button value
|
|
}
|
|
if(temp_encoder_increment > 127){//anti-clockwise
|
|
direction = 1;// flag for encoder direction
|
|
encoder_increment = 256 - temp_encoder_increment;
|
|
}
|
|
else{// clockwise
|
|
direction = 0;
|
|
encoder_increment = temp_encoder_increment;
|
|
}
|
|
}
|
|
```
|
|
|
|
## Related Link
|
|
|
|
- **[The Firmware of inside MEGA328](https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Module/ENCODER/firmware_328p/FacesEncoder328)**
|
|
|
|
## PinMap
|
|
|
|
**Mega328 ISP**Download interface Pin foot definition
|
|
|
|
<img src="assets\img\product_pics\app\mega328_isp.webp" width="30%" height="30%">
|
|
|
|
## Example
|
|
|
|
### 1. Arduino IDE
|
|
|
|
If you want the complete code `faces_encoder.ino`, please click [here](https://github.com/m5stack/M5Stack/tree/master/examples/Face/ENCODER)
|
|
|
|
|
|
<img src="assets/img/product_pics/module/module_example/ENCODER/example_faces_encoder_01.webp" width="55%" height="55%">
|
|
|
|
### 2. UIFlow
|
|
|
|
<img src="assets/img/product_pics/module/module_example/ENCODER/encoder.webp" >
|
|
|
|
<el-divider content-position="right">Last updated: 2020-12-24</el-divider>
|
|
|
|
<script>
|
|
|
|
var purchase_link = 'https://m5stack.com/collections/m5-module/products/encoder-module';
|
|
|
|
anchor_search(purchase_link);
|
|
scrollFunc();
|
|
|
|
</script>
|