mirror of
https://github.com/m5stack/m5-docs.git
synced 2026-05-20 10:23:01 -07:00
120 lines
3.3 KiB
Markdown
120 lines
3.3 KiB
Markdown
# JOYSTICK - ジョイスティック {docsify-ignore-all}
|
|
|
|
<img src="assets/img/product_pics/module/module_joystick_01.png" width="30%" height="30%">
|
|
|
|
***
|
|
|
|
:memo:**[概要](#概要)** :octocat:**[サンプルコード](#サンプルコード)** <!-- :electric_plug:**[回路図](#回路図)** -->🛒**[購入リンク](https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-1172588106.15.6c7f425eQd3OmC&id=581195019026)** :clapper:**[関連動画](#関連動画)**
|
|
|
|
## 概要
|
|
|
|
**<mark>JOYSTICK</mark>**はFACES用のJOYSTICKモジュールです。使用するためには、他にFACESベースとM5Coreをスタックさせる必要があります。ジョイスティックのX,Y方向の変位量や、Z方向のクリックが取得できます。また円形に配置された12個のフルカラーLEDをコントロールすることができます。
|
|
|
|
JOYSTICKとM5Coreの間はI2C通信で接続されています。I2Cアドレスは**0x5E**です。
|
|
|
|
<img src="assets/img/product_pics/module/module_joystick_03.png" width="60%" height="60%">
|
|
|
|
## 特徴
|
|
|
|
- 12個のフルカラーLED
|
|
- I2C通信
|
|
- シンプルなプログラミングインターフェース
|
|
|
|
## 関数
|
|
|
|
**単独LED制御**
|
|
|
|
```arduino
|
|
/*
|
|
Parameter:
|
|
indexOfLED: 0 ~ 11
|
|
r, g, b: 0 ~ 254
|
|
*/
|
|
void Led(int indexOfLED, int r, int g, int b){
|
|
Wire.beginTransmission(FACE_JOY_ADDR);
|
|
Wire.write(indexOfLED);
|
|
Wire.write(r);
|
|
Wire.write(g);
|
|
Wire.write(b);
|
|
Wire.endTransmission();
|
|
}
|
|
```
|
|
|
|
**各方向のジョイスティック変位量とクリック取得**
|
|
|
|
```arduino
|
|
void get_joystick_offset(void){
|
|
Wire.requestFrom(FACE_JOY_ADDR, 5);
|
|
if (Wire.available()) {
|
|
|
|
y_data_L = Wire.read();
|
|
y_data_H = Wire.read();
|
|
x_data_L = Wire.read();
|
|
x_data_H = Wire.read();
|
|
|
|
button_data = Wire.read();// Z(0: released 1: pressed)
|
|
}
|
|
```
|
|
|
|
<img src="assets/img/product_pics/module/module_joystick_02.png" width="60%" height="60%">
|
|
|
|
## パッケージ内容
|
|
|
|
- 1x JOYSTICKモジュール
|
|
|
|
## 関連リンク
|
|
|
|
- **[公式ビデオ](https://i.youku.com/i/UNjE1ODA2MzE0OA==?spm=a2hzp.8253869.0.0)**
|
|
|
|
- **[フォーラム](http://forum.m5stack.com/)**
|
|
|
|
- **[ATmega328pファームウェア](https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Module/JOYSTICK/firmware_328p/FacesJoystick328)**
|
|
|
|
## サンプルコード
|
|
|
|
### Arduino IDE
|
|
|
|
*完全なソースコードは[こちら](https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Module/JOYSTICK/Arduino/faces_joystick)。*
|
|
|
|
```arduino
|
|
/*
|
|
* faces_joystick.ino
|
|
*/
|
|
#include <M5Stack.h>
|
|
|
|
#define FACE_JOY_ADDR 0X5E
|
|
|
|
// declaration
|
|
uint8_t x_data_L;
|
|
uint8_t x_data_H;
|
|
uint8_t y_data_L;
|
|
uint8_t y_data_H;
|
|
uint8_t button_data;
|
|
uint16_t x_data;
|
|
uint16_t y_data;
|
|
|
|
// initialization
|
|
M5.begin();
|
|
Wire.begin();
|
|
|
|
// get data from ENCONDER
|
|
Wire.requestFrom(FACE_JOY_ADDR, 5);
|
|
if (Wire.available()) {
|
|
y_data_L = Wire.read();
|
|
y_data_H = Wire.read();
|
|
x_data_L = Wire.read();
|
|
x_data_H = Wire.read();
|
|
button_data = Wire.read();// Z(0: released 1: pressed)
|
|
x_data = x_data_H << 8 |x_data_L;
|
|
y_data = y_data_H << 8 |y_data_L;
|
|
}
|
|
|
|
// I2C send data, 4bytes
|
|
Wire.beginTransmission(FACE_JOY_ADDR);
|
|
Wire.write(indexOfLED);
|
|
Wire.write(r);
|
|
Wire.write(g);
|
|
Wire.write(b);
|
|
Wire.endTransmission();
|
|
```
|