Picture of Arduino 2D Level
This is a project for Arduino to make a 2D Level, aimed at beginners.

Arduino draws a circle on an LED Matrix that moves around according to readings from a 2D Accelerometer.

* Learn how to draw a circle using simple Maths
* Learn how to use the LOL shield for the Arduino
* Learn how an accelerometer works

Remove these adsRemove these ads by Signing Up

Step 1: What you need

Picture of What you need

Step 2: Wire it up

Picture of Wire it up
Attach the LOL shield to the Arduino.

Wire the Accelerometer as follows:
X => A0
Y => A1
Z => N/C  (Not Connected)

Note: The LOL shield does not come with Headers (as shown in the picture), attached to the topside.

I bought some here:

Step 3: Install the LOL Shield Libraries

Install the Arduino libraries for the LOL shield if you don't have them already.

You can get the link to them from this page:

Step 4: Let's Start With a Circle

Picture of Let's Start With a Circle
We'll start by drawing a circle.

This circle will eventually move around as we tilt the device. But first things first....

We'll illuminate individual pixels on the LOL shield using the LOL library command:

LedSign::Set(x, y , 1);

where x and y are the coordinates on the shield of the LED we wish to illuminate

Our job is to figure out how to calculate the x,y  values that make a circle.

In Pseudo code we do it like this to draw just one quarter (Quadrant) of the circle:

for x = 0 to RADIUS
   y=f(x);     // This means y is some function of x. We haven't said what function yet

So what's the function?

r^2 = x^2 + y^2

where x^2 means "x squared" or "x to the power of 2"

We know x because it's the for loop iterator;
We know r because it's the radius,
So we re-arrange to find y

y = sqrt(r^2 - x^2)    // sqrt() means square-root

When you code it up you get a circle as shown in the picture.
petervojtek6 months ago

what is the purpose of drawing a circle instead of a single dot?

from the level use case point of view, a single dot will be well enough, no? (maybe I missed some point).