Smile Box
Using a LOL Shield and tilt sensor, I made an smile box. The smile box greets with text ” HEY SHAKE ME!”. When a user rotate the smile box, it shows smile animation.
#include “Charliplexing.h”
#include “Font.h”
#include “WProgram.h”
byte line = 0;
char buffer[10];
int value;
int tiltPin = A0;
int tiltState = 0;
/* —————————————————————– */
/** MAIN program Setup
*/
void setup() // run once, when the sketch starts
{
LedSign::Init(); //initiate the screen
// debounce setup
pinMode(tiltPin, OUTPUT);
}
/* —————————————————————– */
/** MAIN program Loop
*/
void loop()
{
tiltState = digitalRead(tiltPin);
if(tiltState == HIGH){
animation();
}
else {
textScroll();
}
}
void textScroll()
{
char test[]=”HEY SKAKE ME!”;
int8_t x=0,x2=0;
for(int8_t j=13;j>-100;j–) {
x=j;
LedSign::Clear();
for(int i=0;i<17;i++) {
x2=Font::Draw(test[i],x,0);
x+=x2;
if (x>=13) break;
}
delay(80);
}
delay(3000);
}
void animation(){
delay(300);
DisplayBitMap(0);
DisplayBitMap(1560);
DisplayBitMap(2340);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(528);
DisplayBitMap(480);
DisplayBitMap(0);
delay(300);
DisplayBitMap(0);
DisplayBitMap(1560);
DisplayBitMap(2340);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(1008);
DisplayBitMap(0);
delay(300);
DisplayBitMap(0);
DisplayBitMap(1560);
DisplayBitMap(2340);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(12483);
DisplayBitMap(0);
delay(300);
DisplayBitMap(8193);
DisplayBitMap(9753);
DisplayBitMap(2340);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(8385);
DisplayBitMap(0);
delay(300);
DisplayBitMap(14343);
DisplayBitMap(9753);
DisplayBitMap(10533);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(8193);
DisplayBitMap(8385);
DisplayBitMap(14343);
delay(300);
DisplayBitMap(8641);
DisplayBitMap(1560);
DisplayBitMap(2340);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(288);
DisplayBitMap(528);
DisplayBitMap(0);
DisplayBitMap(8673);
delay(300);
DisplayBitMap(8873);
DisplayBitMap(1560);
DisplayBitMap(4290);
DisplayBitMap(0);
DisplayBitMap(1040);
DisplayBitMap(10793);
DisplayBitMap(10249);
DisplayBitMap(0);
DisplayBitMap(10373);
delay(300);
DisplayBitMap(6150);
DisplayBitMap(8193);
DisplayBitMap(8193);
DisplayBitMap(192);
DisplayBitMap(288);
DisplayBitMap(192);
DisplayBitMap(8193);
DisplayBitMap(8193);
DisplayBitMap(6150);
delay(300);
DisplayBitMap(2052);
DisplayBitMap(1512);
DisplayBitMap(10773);
DisplayBitMap(5322);
DisplayBitMap(1320);
DisplayBitMap(5322);
DisplayBitMap(10773);
DisplayBitMap(1512);
DisplayBitMap(2052);
delay(300);
DisplayBitMap(0);
DisplayBitMap(1560);
DisplayBitMap(2340);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(6150);
DisplayBitMap(9225);
DisplayBitMap(1008);
DisplayBitMap(0);
delay(300);
DisplayBitMap(0);
DisplayBitMap(1560);
DisplayBitMap(2340);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(12771);
DisplayBitMap(3612);
DisplayBitMap(0);
delay(300);
DisplayBitMap(0);
DisplayBitMap(3096);
DisplayBitMap(4644);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(10249);
DisplayBitMap(2032);
DisplayBitMap(0);
delay(300);
DisplayBitMap(0);
DisplayBitMap(1560);
DisplayBitMap(2340);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(1032);
DisplayBitMap(1008);
DisplayBitMap(0);
}
void DisplayBitMap(int lineint)
{
//int data[9] = {95, 247, 123, 511, 255, 1, 5, 31, 15};
//for(line = 0; line < 9; line++) {
for (byte led=0; led<14; ++led) {
if (lineint & (1<
LedSign::Set(led, line, 1);
}
else {
LedSign::Set(led, line, 0);
}
}
line++;
if(line >= 9) line = 0;
}
Reply