MyMenu

From Land Boards Wiki
Jump to navigation Jump to search

MyMenu-CCA-X3 5793-800px.jpg

Features

MyMenu is a self contained menu system with these features:

  • 0.96" OLED
  • Menu Pushbuttons
    • 5 Way Keypad (Up, Down, Left, Right, Select)
  • Direction, Select buttons
  • 2-wire I2C (VCC, GND, CLK, DATA) interface
    • Selectable I2C address in range 0x20-0x27 (resistor install option)
    • Interrupt output line on button press
  • MCP23008 I2C Port Expander
  • OLED connection - mounts OLED to card and shares I2C connection to Host
  • 3 LEDs
  • 49x49mm card with (4) 4-40 mounting holes

MCP23008 I2C Port Expander

Data Sheet

GPIO Port Map
GP0 - LED D3
GP1 - LED D2
GP2 - LED D1
GP3 - Select button 0 = pressed
GP4 - Right button
GP5 - Down button
GP6 - Up button
GP7 - Left button

OLED Display

  • On ebay...
  • There are several versions
  • MyMenu requires
    • 4-pin I2C version
    • Rev X1-X3 requires pin Ordering VCC, GND, SCL, SDA

I2C Connector

Rev X2 I2C Connector

MyMenu I2C REV X4.PNG

The card has a 5-pin, 0.1" spacing connector. The connector has I2C connections (CLK and DATA) plus an Interrupt line.

  1. GND
  2. VCC
  3. SDA
  4. SCL
  5. INT

Rev X3 I2C Connector

MyMenu I2C REV X2.PNG

The card has a 5-pin, 0.1" spacing connector. The connector has I2C connections (CLK and DATA) plus an Interrupt line.

  1. GND
  2. VCC
  3. SDA
  4. SCL
  5. INT

Rev X2 I2C Connector

MyMenu I2C REV X1.PNG

The card has a 4-pin, 0.1" spacing connector for daisy-chaining. The connector has I2C connections (CLK and DATA).

  1. GND
  2. VCC
  3. SDA
  4. SCL

Rev X1 I2C Connector

MyMenu I2C REV X1.PNG

The card has a 4-pin, 0.1" spacing connector for daisy-chaining. The connector has I2C connections (CLK and DATA).

  1. GND
  2. VCC
  3. SDA
  4. SCL

Arduino Libraries

  • The Display library is decoupled from the MyMenu library and requires a separate install

MyMenu Card Library/Examples

  • MyMenu library on GitHub
    • Can download the ZIP file and use the ZIP library installer
  • Card requires the Arduino Adafruit MCP23008 library
    • Needs to be installed separately from the MyMenu library
    • MCP23008 is the I2C interface chip that communicates with the buttons and LEDs
    • Tested with Adafruit MCP23008 library version 1.0.1
    • Driver is used to talk to the buttons/LEDs on the MyMenu card
    • Driver can be installed from the Arduino IDE - search "Adafruit MCP23008"
  • MyMenu card example code

Display Library - V2 Version

  • V3 Version uses Oli Kraus' u8x8 library (part of u8g2 library)
  • Oli Kraus' u8g2 OLED library
  • Library can be installed through Arduino IDE
  • Optional Land Board Menu System Code for OLED Displays - uses u8g2
    • Sketch uses 8,354 bytes (25%) of program storage space. Maximum is 32,256 bytes.
    • Global variables use 780 bytes (38%) of dynamic memory, leaving 1,268 bytes for local variables. Maximum is 2,048 bytes.

Display Library - Older Version (Deprecated)

Other libraries - Not Recommended for New Designs

Driver/Example code

Revision History/Checkout Notes

X4 Version Changes

  • Same netlist
  • Fixes I2C silkscreen issues from X3

MyMenu-CAD-I2C-X4.PNG

X3 Version Changes

  • Added a second I2C port for daisy chain of Host I2C
  • Changed host I2C pinout to G/V/SDA/SCK
  • Silkscreen is wrong
  • Board actually matches Sensor Shield SCK/SDA order
  • Added selection resistors R10/R11 (Vcc) and R20/R21 (GND) for OLED power/ground pins
  • Install 0 Ohm resistors/leave open
  • Added silkscreen for MCP23008 address marking 0x2_
  • Reordered reference designators for easier assembly

MyMenu-CAD-Layout-X3.PNG

X2 Version Changes

  • Moved LEDs to the top of the board
  • Created OLED module and moved mtg holes
  • Moved keys right

Timing

  • Clock on top, data on bottom

MyMenu-400KHz-I2C.png

  • Clock/data relative timing

MyMenu-I2C-CLK-SDA.png

  • Clock rise time

MyMenu-I2C-CLK-rise.png

  • Clock fall timing

MyMenu-I2C-CLK-fall.png

Parts List