I2C Joystick Unit (MEGA328P)

via M5Stack
$12.10
SKU M5-U024
Description

JOYSTICK, we have two types of JOYSTICKs one is build on a panle compatible with FACES Kit, this is the M5Unit version of JOYSTICK

JOYSTICK is very similar to the 'analog' joystick on PS2 (PlayStation 2) controllers. The X and Y axes are two 10k potentiometers which control 2D movement by generating analog signals. The joystick also has a push button that could be used for special applications. Therefore, the entire Unit can output X-Y motion signals in both directions and Z direction.

As designed in the schematic, the Joystick X dimension is connected to pin A0 of MEGA328, the Joystick Y dimension is connected to pin A1 on MEGA328, the Joystick Z dimension is connected to pin A2 on MEGA328.

This Unit communicates with the M5Core via the GROVE A interface. It's I2C address is 0x52. By reading the data transferred from JOSTICK, you can obtain the motion information of JOYSTICK.

Product Features

  • Output value of X, Y direction: 10 ~ 250
  • Output value of Z direction is (0: released; 1: pressed)
  • Software Development Platform : Arduino, UIFlow(Blockly, Python)
  • Two Lego-compatible holes

Kit includes

  • 1x JOYSTICK Unit
  • 1x Grove Cable

Application

  • Game Controller
  • Robot remote control
Learn

Example

1. Arduino IDE

The code below is incomplete(just for usage). To get complete code, please click here.

#include <M5Stack.h>
#include "Wire.h"

#define JOY_ADDR 0x52

// declaration
uint8_t x_data, y_data, button_data;
char data[100];

// initialization
M5.begin();
M5.Lcd.clear();
dacWrite(25, 0);//disable the speak noise
Wire.begin(21, 22, 400000);


// read data
Wire.requestFrom(JOY_ADDR, 3);
if (Wire.available()) {
  x_data = Wire.read();// X(range: 10~250)
  y_data = Wire.read();// Y(range: 10~250)
  button_data = Wire.read();// Z(0: released 1: pressed)
  sprintf(data, "x:%d y:%d button:%d\n", x_data, y_data, button_data);
}

2. UIFlow

To get complete code, please click here.

More information

Schematic

PinMap

M5Core(GROVE A) GPIO22 GPIO21 5V GND
JOYSTICK Unit SCL SDA 5V GND