I made an Arduino game around the MPU-6050 sensor (6DOF = gyro+accelerometer) and an OLED display:

  • tilt the sensor to move the ball around
  • do not touch the borders
  • try to catch as many squares as possible within 1 minute

img_20161111_114130527

I’m using the GY-521 module with the MPU-6050 sensor, that talks I2C. Getting useful data out of this sensor is not straightforward, but i found a library that makes this very simple; actually it’s not implemented as a library but rather an example sketch that works without any setup. As far as i understand, the challenge is to keep track of pitch and roll based on the gyro, which only outputs relative changes, and needs to be corrected by the acceleromter that has gravity as reference.

My sketch below includes 2 functions: the game, if D7 is connected to GND; and a basic gyro test program that shows the pitch and roll values, shows them in an XY grid, and changes the buzzer pitch according to distance from origin.

img_20161111_132012035_hdr

For the OLED i use the excellent U8G library which allows many fonts and fast graphics.

I include a basic wiring diagram here.

img_20161111_114043044

And here is my sketch, you will need to include 2 files in your sketch folder I2C and Kalman.h, they come with the MPU-6050 example mentioned above:
Somehow WordPress goes ‘oops page not found’ when i try to save this post with my sketch, so i have put it on pastebin, or full zip file gyro-game-v3

3 thoughts on “Arduino gyro game (with MPU6050)

  • Pingback: Pong and Gyro Game Box (Arduino) – Cassiopeia Ltd

  • 12/03/2019 at 05:52
    Permalink

    Hi. I would really like to build this project but i get an error when compiling:
    On line 115
    i2cWrite was not declared i this scope

    Could you please help me out here?

    Reply
    • 23/03/2019 at 14:13
      Permalink

      hi sorry, that pastebin is missing 2 tabs, i have added a link to a zip file on the blog post now

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *