From ce31bfd0d4129024f5a66faa2701c960394d857e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A1=A9=E5=85=A5=E5=AD=94=E7=AB=A0?= Date: Thu, 17 Jan 2019 15:39:45 +0800 Subject: [PATCH] add encoder-ja for faces --- docs/ja/README.md | 4 ++ docs/ja/module/encoder.md | 124 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 docs/ja/module/encoder.md diff --git a/docs/ja/README.md b/docs/ja/README.md index 0f6035ec..2dee1bd1 100644 --- a/docs/ja/README.md +++ b/docs/ja/README.md @@ -46,6 +46,10 @@ +**FACES向け** + +[![encoder_01.jpg](http://m5-docs.oss-cn-shenzhen.aliyuncs.com/assets/img/product_pics/homepage_picture/module/module_encoder_01.png)](ja/module/encoder)          + *** diff --git a/docs/ja/module/encoder.md b/docs/ja/module/encoder.md new file mode 100644 index 00000000..4177e28d --- /dev/null +++ b/docs/ja/module/encoder.md @@ -0,0 +1,124 @@ +# ENCODER + + + +*** + +:memo:**[概要](#概要)**      :octocat:**[サンプルコード](#サンプルコード)**      :electric_plug:**[回路図](#回路図)**      🛒**[購入](https://www.aliexpress.com/item/M5Stack-Encoder-Panel-for-M5Stack-FACES-ESP32-Pocket-Computer-with-12pcs-NeoPixel-LED-MEGA328-Inside-I2C/32960440900.html)** + +## 概要 + +ENCODERはFACES向けのロータリエンコーダモジュールです. 利用するにはFACESベースとM5Coreが必要になります。ENCODERは回転角度を出力します。ダイヤルノブのクリック入力を取得したり、フルカラーLEDを制御することができます。 + +ENCODERはM5CoreからI2C通信で制御することができます。I2Cアドレスは0x5Eです。 + + + +## 特徴 + +- 12 RGB LED +- I2C 通信 +- シンプルAPI + +## 機能 + +**LEDを一つ制御する** + +```arduino +/* + Parameter: + led_index: 0 ~ 11 + r, g, b: 0 ~ 254 +*/ +void Led(int led_index, int r, int g, int b){ + // I2C データ送信 + Wire.beginTransmission(Faces_Encoder_I2C_ADDR); + Wire.write(led_index); + Wire.write(r); + Wire.write(g); + Wire.write(b); + Wire.endTransmission(); +} +``` + +**エンコーダの増分読取り** + +```arduino +void get_encoder_increment(void){ + int temp_encoder_increment; + + // I2C データ読み込み + Wire.requestFrom(Faces_Encoder_I2C_ADDR, 3); + if(Wire.available()){ + temp_encoder_increment = Wire.read(); // 増分を取得 + button_state = Wire.read(); // ボタンの値を取得 + } + if(temp_encoder_increment > 127){ // 反時計まわり + direction = 1; // 回転方向のフラグ + encoder_increment = 256 - temp_encoder_increment; + } + else{// clockwise + direction = 0; + encoder_increment = temp_encoder_increment; + } +} +``` + +## パッケージ内容 + +- 1x ENCODER + +## 関連リンク + +- **[Offical Video](https://www.youtube.com/channel/UCozgFVglWYQXbvTmGyS739w)** + +- **[Forum](http://forum.m5stack.com/)** + +- **[The Firmware of inside MEGA328](https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Module/ENCODER/firmware_328p/FacesEncoder328)** + +## サンプルコード + +### Arduino IDE + +*`faces_encoder.ino`の完全なコードは[こちら](https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Module/ENCODER/Arduino/faces_encoder).* + +```arduino +/* +* faces_encoder.ino +*/ +#include + +#define Faces_Encoder_I2C_ADDR 0X5E + +// 宣言 +int encoder_increment; // +: 時計まわり -: 反時計まわり +uint16_t encoder_value=0; +int button_state; +uint8_t direction; // 0: 時計まわり 1: 反時計まわり +int temp_encoder_increment; + +// 初期化 +M5.begin(); +Wire.begin(); + +// ENCONDERからデータを取得 +Wire.requestFrom(Faces_Encoder_I2C_ADDR, 3); +if(Wire.available()){ + temp_encoder_increment = Wire.read(); // 1バイト目: 増分データ + button_state = Wire.read(); // 2バイト目: ボタンの値 +} + +// I2C データ送信、4バイト +Wire.beginTransmission(Faces_Encoder_I2C_ADDR); +Wire.write(led_index); +Wire.write(r); +Wire.write(g); +Wire.write(b); +Wire.endTransmission(); +``` + + + +