I2C NavKey - 7 Function Joypad (White)
I2C NavKey - 7 Function Joypad (White) is backordered and will ship as soon as it is back in stock.
Couldn't load pickup availability
DESCRIPTION
The I2C NavKey is a perfect solution to make a perfect HMI without using precious resources.
The I2CNavKey is a small board that includes a 7 functions joypad. The joypad has 4 directional keys plus a central button and a rotary ring. It is controllable with the I2C bus, and it’s possible to configure 16 different I2C addresses. The I2CNavKey has also 3 configurable GPIOs with the same footprint as an RGB LED. These 3 GPIOs can be configured independently in 4 different ways: input, output, PWM and analogue input. Since the I2CNavKey is an I2C slave, it has a series of 8-bit registers where it’s possible to configure different parameters, it’s also possible to detect when the buttons are pressed or when the ring is rotated. It also has an open-drain output pin used as an interrupt output. This pin is used to notify the master when some event happens in the I2CNavKey, the source of the interrupt can be customized. Last but not least, it has also 256 bytes of EEPROM.
The I2C NavKey has 4 directional keys plus a central push button. It’s possible to detect when the keys are pressed and when released, the central push button can be detected also when it is double pushed.
The I2C NavKey has also a central wheel that can be rotated left and right. It’s possible to read the central wheel in the same way as the I2C Encoder V2, there are 4 registers:
- CVAL: Current value of the Encoder. This value changes every time the encoder rotates.
- CMAX: Maximum value that CVAL can reach
- CMIN: Minimum value that CVAL can reach
- ISTEP: How much the CVAL has to increment at each and every encoder step.
These 4 registers can be 32bit signed int or as float numbers IEEE 754.
FEATURES
- I2C bus works up to 400kHz
- Possibility to add the pull-up resistors on the I2C bus.
- Possibility to customize the I2C address by soldering the 4 SMD jumpers
- Open-drain Interrupt output pin, so no need to continuously poll the devices
- There is a 5-pin JST-XH header
- There are 3 General Purpose pins. (GP pins)
- 256 byte of internal EEPROM divided into 2 banks of 128 byte
- The voltage range is 2.5V to 5V
- Dimension of the device is 42.5×42.5mm or 1.67×1.67in
- 4 mounting holes with 3mm diameter
- Open source firmware
PIN | I/O Type | Function |
GND | Power | Ground reference for logic |
VCC | Power | Positive supply for logic |
SDA | I/O | I2C Data |
SCL | I | I2C Clock |
INT | OD | Open-drain interrupt output |
The I2C NavKey is powered by the MCU PIC16F18345. Inside of this MCU, there is a specific firmware that takes care of the functionality of the I2C NavKey and also the I2C communication with the external world. The I2C NavKey has several registers where is’t possible to configure the board. E.g. detect when a key is pressed etc. All the functionalities are described in the datasheet.
Address Range | Name | Description | Dimension | Default Value |
0x00 | GCONF | General Configuration | 1 Byte | 0 |
0x01 | GP1CONF | GP 1 Configuration | 1 Byte | 0 |
0x02 | GP2CONF | GP 2 Configuration | 1 Byte | 0 |
00x03 | GP3CONF | GP 3 Configuration | 1 Byte | 0 |
0x04 - 0x05 | INTCONF | INT pin Configuration | 2 Byte | 0 |
0x06 - 0x07 | ISTATUS | Interrupt Status | 2 Byte | 0 |
0x08 | I2STATUS | Secondary Interrupt Status | 1 Byte | 0 |
0x09 | FSTATUS | Fade Process Status | 1 Byte | 0 |
0x0A - 0x0D | CVAL | Counter Value | 4 Byte | 0 |
0x0E - 0x11 | CMAX | Counter Max Value | 4 Byte | 0 |
0x12 - 0x15 | CMIN | Counter Min Value | 4 Byte | 0 |
0x16 - 0x19 | ISTEP | Increment Step Value | 4 Byte | 1 |
0x1A | GP1REG | I/O GP1 Register | 1 Byte | 0 |
0x1B | GP2REG | I/O GP2 Register | 1 Byte | 0 |
0x1C | GP3REG | I/O GP3 Register | 1 Byte | 0 |
0x1D | DPPERIOD | Double Push Period | 1 Byte | 0 |
0x1E | FADEGP | Fade Timer Step of GP Ports | 1 Byte | 0 |
0x1F | GAMMAGP1 | Gamma Correction on PWM of GP1 | 1 Byte | 0 |
0x20 | GAMMAGP2 | Gamma Correction on PWM of GP2 | 1Byte | 0 |
0x21 | GAMMAGP3 | Gamma Correction on PWM of GP3 | 1 Byte | 0 |
0x7E | IDCODE | I2CNavKey Unique Code | 1 Byte | 0x5B |
0x7F | VERSION | I2CNavKey Version | 1 Byte | 0x11 |
0x80 - 0xFF | EEPROM | EEPROM Memory | 128 Byte | 0 |
There are also 3 configurable GPIOs organized with the same footprint of an RGB LED. They are called GP1, GP2, and GP3. Possible Configuration
- PWM In this way, you can add an RGB LED.
- Analog The pins are connected to the internal ADC of the PIC. In this way, you can add sensors or potentiometers according to your project needs
- OutputYou can use the pins as standard digital output
- Input You can use the pins as a standard digital input. Plus you can configure also the interrupt on the edges
In the case of usage as PWM, there is also the possibility to enable the gamma correction. There are 8 type of gamma corrections: Gamma1 (linear), 1.8, 2.0, 2.2, 2.4, 2.6 and 2.8.
The I2C NavKey has an external interrupt, the INT pin, that became low when some event occurs. The event source is configurable in the configuration register. The INT pin is an open drain, this means that a pull-up resistor is required. The I2C NavKey has an internal pull-up that can be activated.
RESOURCES
ProjectArduino Library