mirror of
https://github.com/m5stack/m5-docs.git
synced 2026-05-20 10:23:01 -07:00
3.7 KiB
3.7 KiB
ENCODER {docsify-ignore-all}
📝概要 :octocat:サンプルコード 🔌回路図 🛒購入リンク
概要
ENCODERはFACES向けのロータリエンコーダモジュールです. 利用するにはFACESベースとM5Coreが必要になります。ENCODERは回転角度を出力します。ダイヤルノブのクリック入力を取得したり、フルカラーLEDを制御することができます。
ENCODERはM5CoreからI2C通信で制御することができます。I2Cアドレスは0x5Eです。
特徴
- 12 RGB LED
- I2C 通信
- シンプルAPI
機能
LEDを一つ制御する
/*
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();
}
エンコーダの増分読取り
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
関連リンク
サンプルコード
Arduino IDE
faces_encoder.inoの完全なコードはこちら.
/*
* faces_encoder.ino
*/
#include <M5Stack.h>
#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();

