This time I will show you how to make balancing Led dot using WS2812 led strip and MPU6050 accelerometer and gyroscope module.
This module is physically attached to the LED-strip, so when the LED-strip is held at a certain angle, the chip measures the angle of the LED strip and the Arduino uses this information to update the position of a virtual object as if it was a ball that is balanced on a beam and rolls from one side to the other if the beam is held at an angle. The position of the virtual object is indicated on the LED strip as a single LED that is illuminated. The code is taken from the Roel Arits blog with minor changes in hardware and software. Specifically I use Arduino Nano and LED strip with 37 LEDs.
To update the position of a virtual object that is falling to the earth under the influence of gravity, we use the formula :
y = y0 + (V0 * t) + (0.5 * a * t^2)
y = travelled distance in meters
y0 = start distance in meters
v0 = start velocity in meters/second
a = acceleration (gravity) in meters/second^2
t = time in seconds
All the drivers that are used by the sketch (.ino) are placed in the same folder as the sketch instead of using libraries. The MPU6050 SDA pin is connected to A4, SCL is connected to A5 and interrupt output (INT) is used to tell the Arduino when there is new data available. The WS2812B neopixel LED strip with 37 LEDs is powered directly by the 5V supply and has 1 data line (DIN) that is connected to an output of the Arduino. This project has no practical use at all, but was initiated as an exercise in implementing physics formulas related to gravity.