The code presented on this page can be downloaded or found in the Arduino examples menu under `Examples → SpinWearables → Dancing_with_Color → Motion_Snake`.

# Dancing with Color: Create colorful snake that changes with rotation.

For more examples and information, refer to the dancing companion page.

These include statements should look familiar! As a reminder, they allow the program to access coding tools for the SpinWheel.

``````#include "SpinWearables.h"
using namespace SpinWearables;``````

The setup function should also seem familiar. As a reminder, the `setup` function is run once when the SpinWheel turns on. Also, `SpinWheel.begin()` prepares the LED to accept new colors.

``````void setup() {
SpinWheel.begin();
}``````

Initialize the angle variable to zero. This will keep track of the Spin Wheel’s rotation.

``int angle = 0; ``

Instructions in a loop function are repeated over and over again, in other words, “in a loop”.

``void loop() {``

The `readIMU` function checks if the sensor is ready and takes its current rotation data.

``  SpinWheel.readIMU();``

Use an if statement to check to see if the rotation is large enough. If the rotation is large enough, then we will create a snake-like pattern on the device where the motion of the snake is based on the motion of the device. Experiment with changing the `100` threshold value if you want to make the SpinWheel more or less sensitive. Keep in mind that `gy` measures rotation around the y axis, i.e. spinning in place while hanging the SpinWheel by the keyring.

``````  if (abs(SpinWheel.gy) > 100) {
// Add 10 to make it spin at a reasonable speed.
// Experiment with this number to change the rate
// with which the snake spins. Can you make the
// snake go the other way? (Hint: what happens if you
// subtract 10 instead?)
angle = angle+10;
// Here we use (0,255,0) to make the
// snake green, but you can use any color you like.
SpinWheel.setSmallLEDsPointer(angle, 0, 255, 0);
}``````

Create a pattern on the large LEDs as well.

``  SpinWheel.setLargeLEDsUniform(100, 0, 100);``

Have the SpinWheel draw the desired pattern.

``````  SpinWheel.drawFrame();
}
``````