Driving wheel 

This project uses arduino, LOL shield, and two inputs (tilt sensors). Using its shape, it can be tilted in different directions that triggers different animations. In this case, if the cover is upright, the animation seems as if you are driving a car straightforward. If you grab the steering wheel handle and turn it left, an arrow animation going left can be seen. If you turn the handle right, the arrow animation goes towards the right. If flipped upside down, the arrow is headed up which indicates the autodrive mode.

#include <Charliplexing.h>
#include "Charliplexing.h"
#include "Font.h"
#include "WProgram.h"

byte line = 0;
char buffer[10];
int value;

int tiltPin = A5;
int tiltPin2 = A4;

int tiltState = 0;
int tiltState2 = 0;

#define SCREEN_WIDTH 13
#define SCROLL_DELAY 80
#define REPEAT_DELAY 500
int textLength, totalPixels;
char text[]="HI";

void setup()
{
 LedSign::Init(); //Initializes the screen
 getLength(text, &textLength, &totalPixels);
 pinMode(tiltPin, OUTPUT);
 pinMode(tiltPin2, OUTPUT);
}

void loop()
{
 tiltState = digitalRead(tiltPin);
 tiltState2 = digitalRead(tiltPin2);
 if(tiltState == HIGH && tiltState2 == HIGH){
 leftArrow();
 }
 else if(tiltState == HIGH){
 rightArrow();
 }
 else if(tiltState2 == HIGH){
 rightArrow();
 }
 else{
 roadDrive();
 }
}

void DisplayBitMap(int lineint)
{
 for (byte led=0; led<14; ++led) {
 if (lineint & (1<<led)) {
 LedSign::Set(led, line, 1);
 }
 else {
 LedSign::Set(led, line, 0);
 }
 }

line++;
 if(line >= 9) line = 0;
}

void rightArrow(){
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(192);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(192);
 DisplayBitMap(480);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(192);
 DisplayBitMap(480);
 DisplayBitMap(1008);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(192);
 DisplayBitMap(480);
 DisplayBitMap(1008);
 DisplayBitMap(2040);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(192);
 DisplayBitMap(480);
 DisplayBitMap(1008);
 DisplayBitMap(2040);
 DisplayBitMap(4092);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(192);
 DisplayBitMap(480);
 DisplayBitMap(1008);
 DisplayBitMap(2040);
 DisplayBitMap(4092);
 DisplayBitMap(480);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(192);
 DisplayBitMap(480);
 DisplayBitMap(1008);
 DisplayBitMap(2040);
 DisplayBitMap(4092);
 DisplayBitMap(480);
 DisplayBitMap(480);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(192);
 DisplayBitMap(480);
 DisplayBitMap(1008);
 DisplayBitMap(2040);
 DisplayBitMap(4092);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 delay(100);
 DisplayBitMap(192);
 DisplayBitMap(480);
 DisplayBitMap(1008);
 DisplayBitMap(2040);
 DisplayBitMap(4092);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 delay(100);
 DisplayBitMap(480);
 DisplayBitMap(1008);
 DisplayBitMap(2040);
 DisplayBitMap(4092);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(1008);
 DisplayBitMap(2040);
 DisplayBitMap(4092);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(2040);
 DisplayBitMap(4092);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(4092);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(480);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
}

void leftArrow(){
 delay(100);
 DisplayBitMap(192);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(480);
 DisplayBitMap(192);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(1008);
 DisplayBitMap(480);
 DisplayBitMap(192);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(2040);
 DisplayBitMap(1008);
 DisplayBitMap(480);
 DisplayBitMap(192);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(4092);
 DisplayBitMap(2040);
 DisplayBitMap(1008);
 DisplayBitMap(480);
 DisplayBitMap(192);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(480);
 DisplayBitMap(4092);
 DisplayBitMap(2040);
 DisplayBitMap(1008);
 DisplayBitMap(480);
 DisplayBitMap(192);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(4092);
 DisplayBitMap(2040);
 DisplayBitMap(1008);
 DisplayBitMap(480);
 DisplayBitMap(192);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(4092);
 DisplayBitMap(2040);
 DisplayBitMap(1008);
 DisplayBitMap(480);
 DisplayBitMap(192);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(4092);
 DisplayBitMap(2040);
 DisplayBitMap(1008);
 DisplayBitMap(480);
 DisplayBitMap(192);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(4092);
 DisplayBitMap(2040);
 DisplayBitMap(1008);
 DisplayBitMap(480);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(4092);
 DisplayBitMap(2040);
 DisplayBitMap(1008);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(4092);
 DisplayBitMap(2040);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(4092);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(480);
 DisplayBitMap(480);
 DisplayBitMap(480);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(480);
 DisplayBitMap(480);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(480);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
}

void roadDrive(){
 delay(100);
 DisplayBitMap(528);
 DisplayBitMap(528);
 DisplayBitMap(1032);
 DisplayBitMap(1032);
 DisplayBitMap(2052);
 DisplayBitMap(2052);
 DisplayBitMap(4098);
 DisplayBitMap(4098);
 DisplayBitMap(8193);
 delay(100);
 DisplayBitMap(720);
 DisplayBitMap(528);
 DisplayBitMap(1032);
 DisplayBitMap(1032);
 DisplayBitMap(2052);
 DisplayBitMap(2052);
 DisplayBitMap(4098);
 DisplayBitMap(4098);
 DisplayBitMap(8193);
 delay(100);
 DisplayBitMap(720);
 DisplayBitMap(720);
 DisplayBitMap(1032);
 DisplayBitMap(1032);
 DisplayBitMap(2052);
 DisplayBitMap(2052);
 DisplayBitMap(4098);
 DisplayBitMap(4098);
 DisplayBitMap(8193);
 delay(100);
 DisplayBitMap(720);
 DisplayBitMap(720);
 DisplayBitMap(1224);
 DisplayBitMap(1032);
 DisplayBitMap(2052);
 DisplayBitMap(2052);
 DisplayBitMap(4098);
 DisplayBitMap(4098);
 DisplayBitMap(8193);
 delay(100);
 DisplayBitMap(720);
 DisplayBitMap(720);
 DisplayBitMap(1224);
 DisplayBitMap(1224);
 DisplayBitMap(2052);
 DisplayBitMap(2052);
 DisplayBitMap(4098);
 DisplayBitMap(4098);
 DisplayBitMap(8193);
 delay(100);
 DisplayBitMap(528);
 DisplayBitMap(720);
 DisplayBitMap(1224);
 DisplayBitMap(1224);
 DisplayBitMap(2244);
 DisplayBitMap(2052);
 DisplayBitMap(4098);
 DisplayBitMap(4098);
 DisplayBitMap(8193);
 delay(100);
 DisplayBitMap(528);
 DisplayBitMap(528);
 DisplayBitMap(1224);
 DisplayBitMap(1224);
 DisplayBitMap(2244);
 DisplayBitMap(2244);
 DisplayBitMap(4098);
 DisplayBitMap(4098);
 DisplayBitMap(8193);
 delay(100);
 DisplayBitMap(528);
 DisplayBitMap(528);
 DisplayBitMap(1032);
 DisplayBitMap(1224);
 DisplayBitMap(2244);
 DisplayBitMap(2244);
 DisplayBitMap(4578);
 DisplayBitMap(4098);
 DisplayBitMap(8193);
 delay(100);
 DisplayBitMap(528);
 DisplayBitMap(528);
 DisplayBitMap(1032);
 DisplayBitMap(1032);
 DisplayBitMap(2244);
 DisplayBitMap(2244);
 DisplayBitMap(4578);
 DisplayBitMap(4578);
 DisplayBitMap(8193);
 delay(100);
 DisplayBitMap(528);
 DisplayBitMap(528);
 DisplayBitMap(1032);
 DisplayBitMap(1032);
 DisplayBitMap(2052);
 DisplayBitMap(2244);
 DisplayBitMap(4578);
 DisplayBitMap(4578);
 DisplayBitMap(9201);
 delay(100);
 DisplayBitMap(528);
 DisplayBitMap(528);
 DisplayBitMap(1032);
 DisplayBitMap(1032);
 DisplayBitMap(2052);
 DisplayBitMap(2052);
 DisplayBitMap(4578);
 DisplayBitMap(4578);
 DisplayBitMap(9201);
 delay(100);
 DisplayBitMap(528);
 DisplayBitMap(528);
 DisplayBitMap(1032);
 DisplayBitMap(1032);
 DisplayBitMap(2052);
 DisplayBitMap(2052);
 DisplayBitMap(4098);
 DisplayBitMap(4578);
 DisplayBitMap(9201);
 delay(100);
 DisplayBitMap(528);
 DisplayBitMap(528);
 DisplayBitMap(1032);
 DisplayBitMap(1032);
 DisplayBitMap(2052);
 DisplayBitMap(2052);
 DisplayBitMap(4098);
 DisplayBitMap(4098);
 DisplayBitMap(9201);
 delay(100);
 DisplayBitMap(528);
 DisplayBitMap(528);
 DisplayBitMap(1032);
 DisplayBitMap(1032);
 DisplayBitMap(2052);
 DisplayBitMap(2052);
 DisplayBitMap(4098);
 DisplayBitMap(4098);
 DisplayBitMap(8193);
}

void writeText(){
 int x=0;
 for(int j=SCREEN_WIDTH; j>-totalPixels-SCREEN_WIDTH; j--) {
 x=j;
 LedSign::Clear();
 for(int i=0; i<textLength; i++) {
 x += Font::Draw(text[i],x,0);
 if (x>=SCREEN_WIDTH)
 break;
 }
 delay(SCROLL_DELAY);
 }
 delay(REPEAT_DELAY);
}

void checkTilt(){
 if(tiltState == HIGH){
 rightArrow();
 }
 else if(tiltState2 == HIGH){
 leftArrow();
 }
}

void getLength(char* charArray, int* lengthPtr, int* pixelPtr) {
 int charCount = 0, pixelCount = 0;
 char * charPtr = charArray;
 while (*charPtr != '\0' && *charPtr != '\n') {
 charPtr++;
 charCount++;
 pixelCount += Font::Draw(*charPtr,-SCREEN_WIDTH,0);
 }
 *pixelPtr = pixelCount;
 *lengthPtr = charCount;
}