123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #include <M5Stack.h>
- #include "Wire.h"
- #define FACE_JOY_ADDR 0x5e
- void Init(){
- Wire.begin();
- for (int i = 0; i < 256; i++)
- {
- Wire.beginTransmission(FACE_JOY_ADDR);
- Wire.write(i % 4);
- Wire.write(random(256) * (256 - i) / 256);
- Wire.write(random(256) * (256 - i) / 256);
- Wire.write(random(256) * (256 - i) / 256);
- Wire.endTransmission();
- delay(2);
- }
- Led(0, 0, 0, 0);
- Led(1, 0, 0, 0);
- Led(2, 0, 0, 0);
- Led(3, 0, 0, 0);
- }
- 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();
- }
- void setup() {
- M5.begin();
- M5.Power.begin();
- M5.Lcd.clear();
- M5.Lcd.setCursor(60, 0, 4);
- M5.Lcd.printf("FACE JOYSTICK");
- Init();
- }
- uint8_t x_data_L;
- uint8_t x_data_H;
- uint16_t x_data;
- uint8_t y_data_L;
- uint8_t y_data_H;
- uint16_t y_data;
- uint8_t button_data;
- char data[100];
- void loop() {
-
- 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;
-
- sprintf(data, "x:%d y:%d button:%d\n", x_data, y_data, button_data);
- Serial.print(data);
- M5.Lcd.setCursor(45, 120);
- M5.Lcd.println(data);
- if (x_data > 600){
- Led(2, 0, 0, 50);
- Led(0, 0, 0, 0);
- }
- else if (x_data < 400)
- {
- Led(0, 0, 0, 50);
- Led(2, 0, 0, 0);
- }
- else{
- Led(0, 0, 0,0);
- Led(2, 0, 0, 0);
- }
-
- if (y_data > 600)
- {
- Led(3, 0, 0, 50);
- Led(1, 0, 0, 0);
- }
- else if (y_data < 400)
- {
- Led(1, 0, 0, 50);
- Led(3, 0, 0, 0);
- }
- else{
- Led(1, 0, 0, 0);
- Led(3, 0, 0, 0);
- }
- }
- delay(200);
- }
|