FallShield
Hello all,
This is my Fall inspired Lol Shield dynamic animation!
As demonstrated in class, it operates with a tilt sensor that causes a looped animation to occur when disturbed.
Hello all,
This is my Fall inspired Lol Shield dynamic animation!
As demonstrated in class, it operates with a tilt sensor that causes a looped animation to occur when disturbed.
Lucifer was intended to be a Magic-8-Ball, but she was born different. She was born a Magic-6-Cube. On top of that, she has struggled with her name all her life, so to fight it off, she decided she would make people love her by always answering positively. This means, of course, that sometimes people might ask the wrong question, and a positive answer might not be that good for them. But Lucy (as she prefers to be called) is happy whenever she can make one person’s day brighter!
/* Requires LoL Shield library, at least V0.2Beta http://code.google.com/p/lolshield/downloads/list And the Font.cpp from LoL_Shield-100915.zip on ikkei's page: http://web.mac.com/kxm_ikkei/Site/LoL.html Based on original TEXT SAMPLE CODE for LOL Shield for Arduino Copyright 2009/2010 Benjamin Sonntag <benjamin@sonntag.fr> http://benjamin.sonntag.fr/ (This version edited by Walfas) */ #include "Charliplexing.h" #include "Font.h" #include "WProgram.h" // Technically the number of columns of LEDs minus one #define SCREEN_WIDTH 13 // Scroll delay: lower values result in faster scrolling #define SCROLL_DELAY 80 /* How long to wait after the last letter before going back to the beginning and repeating */ #define REPEAT_DELAY 500 // SMILEY FACE byte line = 0; //Row counter char buffer[10]; int value; // BUTTON int buttonPin = A5; // the number of the pushbutton pin int lightPin = A0; int ledPin = A2; int val = 0; int buttonState = 0; // variable for reading the pushbutton status int textLength, totalPixels; char text[9]; int r=0; void setup() { Serial.begin(9600); LedSign::Init(); pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); pinMode(lightPin, INPUT); } void loop() { buttonState = digitalRead(buttonPin); val = analogRead(lightPin); // Read the value (amount of light) from photocell Serial.println(val); // Print out the value to the serial port // smiley(); if(val <= 330){ digitalWrite(ledPin, HIGH); } else{ digitalWrite(ledPin, LOW); } // BUTTON if (buttonState == HIGH) { r = int(random(4)); if(r==0){ text[0] = 'H'; text[1] = 'E'; text[2] = 'L'; text[3] = 'L'; text[4] = ' '; text[5] = 'Y'; text[6] = 'E'; text[7] = 'A'; text[8] = 'H'; } else if(r==1) { text[0] = 'B'; text[1] = 'E'; text[2] = 'T'; text[3] = ' '; text[4] = 'O'; text[5] = 'N'; text[6] = ' '; text[7] = 'I'; text[8] = 'T'; } else if(r==2) { text[0] = 'A'; text[1] = 'S'; text[2] = 'K'; text[3] = ' '; text[4] = 'A'; text[5] = 'G'; text[6] = 'A'; text[7] = 'I'; text[8] = 'N'; } else if(r==3) { text[0] = 'W'; text[1] = 'O'; text[2] = 'R'; text[3] = 'D'; text[4] = ' '; text[5] = ' '; text[6] = ' '; text[7] = ' '; text[8] = ' '; } getLength(text, &textLength, &totalPixels); 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); } } // FUNCTION void smiley(){ delay(400); DisplayBitMap(0); DisplayBitMap(1560); DisplayBitMap(3900); DisplayBitMap(1560); DisplayBitMap(0); DisplayBitMap(1008); DisplayBitMap(480); DisplayBitMap(192); DisplayBitMap(0); delay(400); DisplayBitMap(1560); DisplayBitMap(3900); DisplayBitMap(1560); DisplayBitMap(0); DisplayBitMap(4092); DisplayBitMap(2040); DisplayBitMap(1008); DisplayBitMap(480); DisplayBitMap(0); delay(400); DisplayBitMap(0); DisplayBitMap(1560); DisplayBitMap(3900); DisplayBitMap(1560); DisplayBitMap(0); DisplayBitMap(2040); DisplayBitMap(1008); DisplayBitMap(480); DisplayBitMap(0); delay(400); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(1560); DisplayBitMap(3900); DisplayBitMap(1560); DisplayBitMap(0); DisplayBitMap(1008); DisplayBitMap(480); DisplayBitMap(192); } // FUNCTION 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<<led)) { LedSign::Set(led, line, 1); } else { LedSign::Set(led, line, 0); } } line++; if(line >= 9) line = 0; } // FUNCTION void getLength(char* charArray, int* lengthPtr, int* pixelPtr) { /* Finds the length of a string in terms of characters and pixels and assigns them to the variable at addresses lengthPtr and pixelPtr, respectively. */ int charCount = 0, pixelCount = 0; char * charPtr = charArray; // Count chars until newline or null character reached while (*charPtr != '\0' && *charPtr != '\n') { charPtr++; charCount++; /* Increment pixelCount by the number of pixels the current character takes up horizontally. */ pixelCount += Font::Draw(*charPtr,-SCREEN_WIDTH,0); } *pixelPtr = pixelCount; *lengthPtr = charCount; }
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;
}
This project is comprised of an Arduino UNO board, an LoL Shield, and a tilt sensor. Using the tilt sensor when it is attached to a baseball cap should reflect when I am asleep. My head hanging down should show that the tilt sensor is ON and beginning the scrolling text which says “WAKE ME UP YO”. When someone sees this they will ideally wake me up and when I lift my head the tilt sensor would tilt OFF and stop creating the Scrolling Text. The premise for this project is that it would be used in the train station during my evening commute to help me NOT miss my stop in Harlem.
<code>
const int buttonPin = A4; // the number of the pushbutton pin
int buttonState = 0; // variable for reading the pushbutton status
#include “Charliplexing.h”
#include “Font.h”
#include “WProgram.h”
// Technically the number of columns of LEDs minus one
#define SCREEN_WIDTH 13
// Scroll delay: lower values result in faster scrolling
#define SCROLL_DELAY 80
/* How long to wait after the last letter before
going back to the beginning and repeating */
#define REPEAT_DELAY 500
int textLength, totalPixels;
char text[]=”WAKE ME UP YO”;
void setup() {
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
LedSign::Init();
getLength(text, &textLength, &totalPixels);
}
void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == LOW) {
int x=0;
for(int j=SCREEN_WIDTH; j>-totalPixels-SCREEN_WIDTH; j–) {
x=j;
LedSign::Clear();
for(int i=0; i<textLength; i++) {
if (x>=SCREEN_WIDTH)
break;
}
delay(SCROLL_DELAY);
}
delay(REPEAT_DELAY);
}
else {
}
}
void getLength(char* charArray, int* lengthPtr, int* pixelPtr) {
/* Finds the length of a string in terms of characters
and pixels and assigns them to the variable at
addresses lengthPtr and pixelPtr, respectively. */
int charCount = 0, pixelCount = 0;
char * charPtr = charArray;
// Count chars until newline or null character reached
while (*charPtr != ” && *charPtr != ‘\n’) {
charPtr++;
charCount++;
/* Increment pixelCount by the number of pixels
the current character takes up horizontally. */
pixelCount += Font::Draw(*charPtr,-SCREEN_WIDTH,0);
}
*pixelPtr = pixelCount;
*lengthPtr = charCount;
}
</code>
For this project, I used an arduino, tilt sensor, photocell, and LOLshield to create a digital aquarium. At rest, the fish sits peacefully in its tank. If the tank is disturbed, the water flows and the fish swims around. The fish can also be fed food by placing your hand at the opening of the tank.
The animation was created using the LOLshield theater. A photo cell was used to control the food animation, and the tilt sensor for the fish swimming.
The video in this post is a slight upgrade to what I showed in class. The animation was originally kind of confusing, because the water flow didn’t include the fish and wasn’t at the same height as the “fish at rest” position. I tweaked it so that the fish swam around when the tank was disturbed, which usually is what happens when you shake/tap a fish tank.
To make this project a bit better, I need to fix a couple of the dead LEDs that are on the board. I’d also like to change the interior of the tank; maybe framing the LOL shield in a castle, and placing the castle on gravel/marbles and using blue tissue paper. The vase does look better than my first enclosure though. It was a plastic cube, see below.
#include <Charliplexing.h> //Imports the library, which needs to be byte line = 0; //Row counter char buffer[10]; int value; int buttonPin = A4; // the number of the pushbutton pin int photoPin = A5; // photocell pin int val = 0; // value of photocell input int buttonState = 0; // variable for reading the pushbutton status void setup() { Serial.begin(9600); LedSign::Init(); //Initializes the screen // initialize the LED pin as an output: // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); pinMode(photoPin, INPUT); } void loop(){ // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); val = analogRead(photoPin); Serial.println(val); // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (val <=600){ eat(); } if (buttonState == HIGH) { Serial.println("look at fish"); delay(100); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(1092); DisplayBitMap(9830); DisplayBitMap(16383); DisplayBitMap(0); DisplayBitMap(13); DisplayBitMap(30); DisplayBitMap(13); } else { Serial.println("sea is flowing"); delay(700); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(9284); DisplayBitMap(13926); DisplayBitMap(16383); delay(700); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(2184); DisplayBitMap(11468); DisplayBitMap(16383); delay(700); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(4369); DisplayBitMap(6553); DisplayBitMap(16383); delay(700); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(1092); DisplayBitMap(9830); DisplayBitMap(16383); delay(700); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(2184); DisplayBitMap(3276); DisplayBitMap(16383); } } 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<<led)) { LedSign::Set(led, line, 1); } else { LedSign::Set(led, line, 0); } } line++; if(line >= 9) line = 0; } void eat() { delay(100); DisplayBitMap(16); DisplayBitMap(0); DisplayBitMap(1092); DisplayBitMap(9830); DisplayBitMap(16383); DisplayBitMap(0); DisplayBitMap(13); DisplayBitMap(30); DisplayBitMap(13); delay(100); DisplayBitMap(0); DisplayBitMap(16); DisplayBitMap(1092); DisplayBitMap(9830); DisplayBitMap(16383); DisplayBitMap(0); DisplayBitMap(13); DisplayBitMap(30); DisplayBitMap(13); delay(100); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(1108); DisplayBitMap(9830); DisplayBitMap(16383); DisplayBitMap(0); DisplayBitMap(13); DisplayBitMap(30); DisplayBitMap(13); delay(100); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(1092); DisplayBitMap(9846); DisplayBitMap(16383); DisplayBitMap(0); DisplayBitMap(13); DisplayBitMap(30); DisplayBitMap(13); delay(100); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(1092); DisplayBitMap(9830); DisplayBitMap(16383); DisplayBitMap(0); DisplayBitMap(13); DisplayBitMap(30); DisplayBitMap(13); delay(100); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(1092); DisplayBitMap(9830); DisplayBitMap(16383); DisplayBitMap(16); DisplayBitMap(13); DisplayBitMap(30); DisplayBitMap(13); delay(100); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(1092); DisplayBitMap(9830); DisplayBitMap(16383); DisplayBitMap(0); DisplayBitMap(29); DisplayBitMap(30); DisplayBitMap(13); delay(100); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(1092); DisplayBitMap(9830); DisplayBitMap(16383); DisplayBitMap(0); DisplayBitMap(13); DisplayBitMap(30); DisplayBitMap(13); }
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; }
Robot Love Story a modern tragedy. The tale of a girl and her robot, they meet, they fall in love. Out of nowhere the robot leaves, the girl is so distraught that she drinks from a bottle of poison and kills herself. The robot returns to find his love dead and is so sad that he destructs. The End.
I used the LOL shield theater to create the animation. I also created a button using soft circuits to control the video
/*
This file was dynamically created by the Lol Shield Theatre: http://falldeaf.com/lolshield/
Feel free to drop by and create your own cinema masterpiece 🙂
-falldeaf
Animation information –
/////////////////////////
//title: robot love chapter 1
//author: Maya
//description: robot love
/////////////////////////
//current score: 0 (as of Friday 18th of November 2011 03:14:59 AM )
//animation page at: http://falldeaf.com/lolshield/show.php?anim=698
/////////////////////////
This program is a modification of the Basic LoL Shield Test
Modified by falldeaf on 2/27/2011.
Writen for the LoL Shield, designed by Jimmie Rodgers:
http://jimmieprodgers.com/kits/lolshield/
This needs the Charliplexing library, which you can get at the
LoL Shield project page: http://code.google.com/p/lolshield/
Created by Jimmie Rodgers on 12/30/2009.
Adapted from: http://www.arduino.cc/playground/Code/BitMath
History:
December 30, 2009 – V1.0 first version written at 26C3/Berlin
This is free software; you can redistribute it and/or
modify it under the terms of the GNU Version 3 General Public
License as published by the Free Software Foundation;
or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include //Imports the library, which needs to be
#include “Font.h”
#include “WProgram.h”
#define SCREEN_WIDTH 13
// Scroll delay: lower values result in faster scrolling
#define SCROLL_DELAY 80
/* How long to wait after the last letter before
going back to the beginning and repeating */
#define REPEAT_DELAY 500
int buttonPin = A4;
int debounce = 10;
int buttonState = 0;
int textLength, totalPixels;
char text[]=”ROBOT LOVE A MODERN TRAGEDY”;
byte line = 0; //Row counter
char buffer[10];
int value;
void setup()
{
pinMode(buttonPin, INPUT);
LedSign::Init(); //Initializes the screen
getLength(text, &textLength, &totalPixels);
}
void loop()
{
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
int x=0;
for(int j=SCREEN_WIDTH; j>-totalPixels-SCREEN_WIDTH; j–) {
x=j;
LedSign::Clear();
for(int i=0; i=SCREEN_WIDTH)
break;
}
delay(SCROLL_DELAY);
}
delay(REPEAT_DELAY);
// unsigned char subtitle [] = “A MODERN TRAGEDY \xCA\xDB\xB0\xDC\xB0\xD9\xC4\xDE! “;
//
// //16_t x=0;
// for(int16_t j=13;j>-200;j–) {
// x=j;
// LedSign::Clear();
// for(int i=0;i=13) break;
// }
// delay(80);
// }
//delay(100);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(1800);
DisplayBitMap(3518);
DisplayBitMap(2184);
DisplayBitMap(3988);
DisplayBitMap(1826);
delay(1000);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(1800);
DisplayBitMap(3518);
DisplayBitMap(2248);
DisplayBitMap(3988);
DisplayBitMap(1826);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(3600);
DisplayBitMap(7036);
DisplayBitMap(4496);
DisplayBitMap(7976);
DisplayBitMap(3652);
delay(100);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(84);
DisplayBitMap(116);
DisplayBitMap(7200);
DisplayBitMap(14072);
DisplayBitMap(8992);
DisplayBitMap(15952);
DisplayBitMap(7304);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(3600);
DisplayBitMap(7036);
DisplayBitMap(4496);
DisplayBitMap(7976);
DisplayBitMap(3652);
delay(100);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(1800);
DisplayBitMap(3518);
DisplayBitMap(2248);
DisplayBitMap(3988);
DisplayBitMap(1826);
delay(100);
DisplayBitMap(0);
DisplayBitMap(15);
DisplayBitMap(10);
DisplayBitMap(14);
DisplayBitMap(900);
DisplayBitMap(1759);
DisplayBitMap(1124);
DisplayBitMap(1994);
DisplayBitMap(913);
delay(100);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(1800);
DisplayBitMap(3518);
DisplayBitMap(2248);
DisplayBitMap(3988);
DisplayBitMap(1826);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(3600);
DisplayBitMap(7036);
DisplayBitMap(4496);
DisplayBitMap(7976);
DisplayBitMap(3652);
delay(100);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(84);
DisplayBitMap(116);
DisplayBitMap(7200);
DisplayBitMap(14072);
DisplayBitMap(8992);
DisplayBitMap(15952);
DisplayBitMap(7304);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(3600);
DisplayBitMap(7036);
DisplayBitMap(4496);
DisplayBitMap(7976);
DisplayBitMap(3652);
delay(100);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(1800);
DisplayBitMap(3518);
DisplayBitMap(2248);
DisplayBitMap(3988);
DisplayBitMap(1826);
delay(100);
DisplayBitMap(0);
DisplayBitMap(15);
DisplayBitMap(10);
DisplayBitMap(14);
DisplayBitMap(900);
DisplayBitMap(1759);
DisplayBitMap(1124);
DisplayBitMap(1994);
DisplayBitMap(913);
delay(100);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(1800);
DisplayBitMap(3518);
DisplayBitMap(2248);
DisplayBitMap(3988);
DisplayBitMap(1826);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(3600);
DisplayBitMap(7036);
DisplayBitMap(4496);
DisplayBitMap(7976);
DisplayBitMap(3652);
delay(100);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(84);
DisplayBitMap(116);
DisplayBitMap(7200);
DisplayBitMap(14072);
DisplayBitMap(8992);
DisplayBitMap(15952);
DisplayBitMap(7304);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(3600);
DisplayBitMap(7036);
DisplayBitMap(4496);
DisplayBitMap(7976);
DisplayBitMap(3652);
delay(100);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(1800);
DisplayBitMap(3518);
DisplayBitMap(2248);
DisplayBitMap(3988);
DisplayBitMap(1826);
delay(100);
DisplayBitMap(0);
DisplayBitMap(15);
DisplayBitMap(10);
DisplayBitMap(14);
DisplayBitMap(900);
DisplayBitMap(1759);
DisplayBitMap(1124);
DisplayBitMap(1994);
DisplayBitMap(913);
delay(1000);
delay(100);
DisplayBitMap(0);
DisplayBitMap(879);
DisplayBitMap(1002);
DisplayBitMap(462);
DisplayBitMap(7300);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(1728);
DisplayBitMap(2351);
DisplayBitMap(1098);
DisplayBitMap(654);
DisplayBitMap(7428);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(0);
DisplayBitMap(879);
DisplayBitMap(1002);
DisplayBitMap(462);
DisplayBitMap(7300);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(1728);
DisplayBitMap(2351);
DisplayBitMap(1098);
DisplayBitMap(654);
DisplayBitMap(7428);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(0);
DisplayBitMap(879);
DisplayBitMap(1002);
DisplayBitMap(462);
DisplayBitMap(7300);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(1728);
DisplayBitMap(2351);
DisplayBitMap(1098);
DisplayBitMap(654);
DisplayBitMap(7428);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(0);
DisplayBitMap(879);
DisplayBitMap(1002);
DisplayBitMap(462);
DisplayBitMap(7300);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(1728);
DisplayBitMap(2351);
DisplayBitMap(1098);
DisplayBitMap(654);
DisplayBitMap(7428);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(0);
DisplayBitMap(879);
DisplayBitMap(1002);
DisplayBitMap(462);
DisplayBitMap(7300);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(1728);
DisplayBitMap(2351);
DisplayBitMap(1098);
DisplayBitMap(654);
DisplayBitMap(7428);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(0);
DisplayBitMap(879);
DisplayBitMap(1002);
DisplayBitMap(462);
DisplayBitMap(7300);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(1728);
DisplayBitMap(2351);
DisplayBitMap(1098);
DisplayBitMap(654);
DisplayBitMap(7428);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(0);
DisplayBitMap(879);
DisplayBitMap(1002);
DisplayBitMap(462);
DisplayBitMap(7300);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(1728);
DisplayBitMap(2351);
DisplayBitMap(1098);
DisplayBitMap(654);
DisplayBitMap(7428);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(0);
DisplayBitMap(879);
DisplayBitMap(1002);
DisplayBitMap(462);
DisplayBitMap(7300);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(1728);
DisplayBitMap(2351);
DisplayBitMap(1098);
DisplayBitMap(654);
DisplayBitMap(7428);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(0);
DisplayBitMap(879);
DisplayBitMap(1002);
DisplayBitMap(462);
DisplayBitMap(7300);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(1728);
DisplayBitMap(2351);
DisplayBitMap(1098);
DisplayBitMap(654);
DisplayBitMap(7428);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(0);
DisplayBitMap(879);
DisplayBitMap(1002);
DisplayBitMap(462);
DisplayBitMap(7300);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(100);
DisplayBitMap(1728);
DisplayBitMap(2351);
DisplayBitMap(1098);
DisplayBitMap(654);
DisplayBitMap(7428);
DisplayBitMap(13855);
DisplayBitMap(8708);
DisplayBitMap(15882);
DisplayBitMap(7185);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(904);
DisplayBitMap(1784);
DisplayBitMap(1128);
DisplayBitMap(2004);
DisplayBitMap(932);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(1808);
DisplayBitMap(3568);
DisplayBitMap(2256);
DisplayBitMap(4008);
DisplayBitMap(1864);
delay(100);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(84);
DisplayBitMap(116);
DisplayBitMap(3616);
DisplayBitMap(7136);
DisplayBitMap(4512);
DisplayBitMap(8016);
DisplayBitMap(3728);
delay(100);
DisplayBitMap(0);
DisplayBitMap(248);
DisplayBitMap(168);
DisplayBitMap(232);
DisplayBitMap(7232);
DisplayBitMap(14272);
DisplayBitMap(9024);
DisplayBitMap(16032);
DisplayBitMap(7456);
delay(100);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(84);
DisplayBitMap(116);
DisplayBitMap(3616);
DisplayBitMap(7136);
DisplayBitMap(4512);
DisplayBitMap(8016);
DisplayBitMap(3728);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(1808);
DisplayBitMap(3568);
DisplayBitMap(2256);
DisplayBitMap(4008);
DisplayBitMap(1864);
delay(100);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(904);
DisplayBitMap(1784);
DisplayBitMap(1128);
DisplayBitMap(2004);
DisplayBitMap(932);
delay(100);
DisplayBitMap(0);
DisplayBitMap(15);
DisplayBitMap(10);
DisplayBitMap(14);
DisplayBitMap(452);
DisplayBitMap(892);
DisplayBitMap(564);
DisplayBitMap(1002);
DisplayBitMap(466);
delay(100);
DisplayBitMap(0);
DisplayBitMap(7);
DisplayBitMap(5);
DisplayBitMap(7);
DisplayBitMap(226);
DisplayBitMap(446);
DisplayBitMap(282);
DisplayBitMap(501);
DisplayBitMap(233);
delay(100);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(904);
DisplayBitMap(1784);
DisplayBitMap(1128);
DisplayBitMap(2004);
DisplayBitMap(932);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(1808);
DisplayBitMap(3568);
DisplayBitMap(2256);
DisplayBitMap(4008);
DisplayBitMap(1864);
delay(100);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(84);
DisplayBitMap(116);
DisplayBitMap(3616);
DisplayBitMap(7136);
DisplayBitMap(4512);
DisplayBitMap(8016);
DisplayBitMap(3728);
delay(100);
DisplayBitMap(0);
DisplayBitMap(248);
DisplayBitMap(168);
DisplayBitMap(232);
DisplayBitMap(7232);
DisplayBitMap(14272);
DisplayBitMap(9024);
DisplayBitMap(16032);
DisplayBitMap(7456);
delay(100);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(84);
DisplayBitMap(116);
DisplayBitMap(3616);
DisplayBitMap(7136);
DisplayBitMap(4512);
DisplayBitMap(8016);
DisplayBitMap(3728);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(1808);
DisplayBitMap(3568);
DisplayBitMap(2256);
DisplayBitMap(4008);
DisplayBitMap(1864);
delay(100);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(904);
DisplayBitMap(1784);
DisplayBitMap(1128);
DisplayBitMap(2004);
DisplayBitMap(932);
delay(100);
DisplayBitMap(0);
DisplayBitMap(15);
DisplayBitMap(10);
DisplayBitMap(14);
DisplayBitMap(452);
DisplayBitMap(892);
DisplayBitMap(564);
DisplayBitMap(1002);
DisplayBitMap(466);
delay(100);
DisplayBitMap(0);
DisplayBitMap(7);
DisplayBitMap(5);
DisplayBitMap(7);
DisplayBitMap(226);
DisplayBitMap(446);
DisplayBitMap(282);
DisplayBitMap(501);
DisplayBitMap(233);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(904);
DisplayBitMap(1784);
DisplayBitMap(1128);
DisplayBitMap(2004);
DisplayBitMap(932);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(1808);
DisplayBitMap(3568);
DisplayBitMap(2256);
DisplayBitMap(4008);
DisplayBitMap(1864);
delay(100);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(84);
DisplayBitMap(116);
DisplayBitMap(3616);
DisplayBitMap(7136);
DisplayBitMap(4512);
DisplayBitMap(8016);
DisplayBitMap(3728);
delay(100);
DisplayBitMap(0);
DisplayBitMap(248);
DisplayBitMap(168);
DisplayBitMap(232);
DisplayBitMap(7232);
DisplayBitMap(14272);
DisplayBitMap(9024);
DisplayBitMap(16032);
DisplayBitMap(7456);
delay(100);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(84);
DisplayBitMap(116);
DisplayBitMap(3616);
DisplayBitMap(7136);
DisplayBitMap(4512);
DisplayBitMap(8016);
DisplayBitMap(3728);
delay(100);
DisplayBitMap(0);
DisplayBitMap(62);
DisplayBitMap(42);
DisplayBitMap(58);
DisplayBitMap(1808);
DisplayBitMap(3568);
DisplayBitMap(2256);
DisplayBitMap(4008);
DisplayBitMap(1864);
delay(100);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(904);
DisplayBitMap(1784);
DisplayBitMap(1128);
DisplayBitMap(2004);
DisplayBitMap(932);
delay(100);
DisplayBitMap(0);
DisplayBitMap(15);
DisplayBitMap(10);
DisplayBitMap(14);
DisplayBitMap(452);
DisplayBitMap(892);
DisplayBitMap(564);
DisplayBitMap(1002);
DisplayBitMap(466);
delay(100);
DisplayBitMap(0);
DisplayBitMap(7);
DisplayBitMap(5);
DisplayBitMap(7);
DisplayBitMap(226);
DisplayBitMap(446);
DisplayBitMap(282);
DisplayBitMap(501);
DisplayBitMap(233);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(904);
DisplayBitMap(1784);
DisplayBitMap(1128);
DisplayBitMap(2004);
DisplayBitMap(932);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(1800);
DisplayBitMap(3512);
DisplayBitMap(2184);
DisplayBitMap(3988);
DisplayBitMap(1828);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(3592);
DisplayBitMap(6968);
DisplayBitMap(4360);
DisplayBitMap(7956);
DisplayBitMap(3620);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(7176);
DisplayBitMap(13880);
DisplayBitMap(8712);
DisplayBitMap(15892);
DisplayBitMap(7204);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(14344);
DisplayBitMap(3128);
DisplayBitMap(1032);
DisplayBitMap(15380);
DisplayBitMap(14372);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(12296);
DisplayBitMap(6200);
DisplayBitMap(2056);
DisplayBitMap(14356);
DisplayBitMap(12324);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(8200);
DisplayBitMap(12344);
DisplayBitMap(4104);
DisplayBitMap(12308);
DisplayBitMap(8228);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(8);
DisplayBitMap(8248);
DisplayBitMap(8200);
DisplayBitMap(8212);
DisplayBitMap(36);
delay(200);
DisplayBitMap(0);
DisplayBitMap(31);
DisplayBitMap(21);
DisplayBitMap(29);
DisplayBitMap(8);
DisplayBitMap(62);
DisplayBitMap(8);
DisplayBitMap(20);
DisplayBitMap(34);
delay(100);
DisplayBitMap(6912);
DisplayBitMap(9359);
DisplayBitMap(8330);
DisplayBitMap(8334);
DisplayBitMap(4373);
DisplayBitMap(2574);
DisplayBitMap(1028);
DisplayBitMap(10);
DisplayBitMap(17);
delay(200);
DisplayBitMap(6912);
DisplayBitMap(9359);
DisplayBitMap(8330);
DisplayBitMap(8334);
DisplayBitMap(4373);
DisplayBitMap(2574);
DisplayBitMap(1028);
DisplayBitMap(10);
DisplayBitMap(17);
delay(200);
DisplayBitMap(6912);
DisplayBitMap(9359);
DisplayBitMap(9354);
DisplayBitMap(9358);
DisplayBitMap(5397);
DisplayBitMap(3598);
DisplayBitMap(1028);
DisplayBitMap(10);
DisplayBitMap(17);
delay(200);
DisplayBitMap(6336);
DisplayBitMap(9519);
DisplayBitMap(9514);
DisplayBitMap(9518);
DisplayBitMap(5461);
DisplayBitMap(3470);
DisplayBitMap(1284);
DisplayBitMap(10);
DisplayBitMap(17);
delay(200);
DisplayBitMap(6336);
DisplayBitMap(9519);
DisplayBitMap(9514);
DisplayBitMap(9518);
DisplayBitMap(5461);
DisplayBitMap(3470);
DisplayBitMap(1284);
DisplayBitMap(10);
DisplayBitMap(17);
delay(200);
DisplayBitMap(4224);
DisplayBitMap(3407);
DisplayBitMap(8266);
DisplayBitMap(5646);
DisplayBitMap(4245);
DisplayBitMap(2318);
DisplayBitMap(1540);
DisplayBitMap(10);
DisplayBitMap(17);
delay(200);
DisplayBitMap(0);
DisplayBitMap(2191);
DisplayBitMap(10);
DisplayBitMap(5454);
DisplayBitMap(85);
DisplayBitMap(2318);
DisplayBitMap(516);
DisplayBitMap(10506);
DisplayBitMap(17);
delay(200);
DisplayBitMap(0);
DisplayBitMap(15);
DisplayBitMap(10);
DisplayBitMap(14);
DisplayBitMap(1045);
DisplayBitMap(4238);
DisplayBitMap(5124);
DisplayBitMap(2314);
DisplayBitMap(5777);
delay(200);
DisplayBitMap(0);
DisplayBitMap(15);
DisplayBitMap(10);
DisplayBitMap(14);
DisplayBitMap(21);
DisplayBitMap(14);
DisplayBitMap(4);
DisplayBitMap(10);
DisplayBitMap(8081);
delay(200);
DisplayBitMap(0);
DisplayBitMap(7);
DisplayBitMap(5);
DisplayBitMap(7);
DisplayBitMap(10);
DisplayBitMap(7);
DisplayBitMap(2);
DisplayBitMap(5);
DisplayBitMap(12936);
delay(200);
DisplayBitMap(0);
DisplayBitMap(3);
DisplayBitMap(2);
DisplayBitMap(3);
DisplayBitMap(5);
DisplayBitMap(3);
DisplayBitMap(1);
DisplayBitMap(2);
DisplayBitMap(5188);
delay(200);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(1);
DisplayBitMap(1058);
delay(200);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(1);
delay(200);
DisplayBitMap(1024);
DisplayBitMap(1024);
DisplayBitMap(2560);
DisplayBitMap(4352);
DisplayBitMap(6912);
DisplayBitMap(5376);
DisplayBitMap(6912);
DisplayBitMap(4353);
DisplayBitMap(7938);
delay(200);
DisplayBitMap(1024);
DisplayBitMap(1027);
DisplayBitMap(2562);
DisplayBitMap(4355);
DisplayBitMap(6913);
DisplayBitMap(5383);
DisplayBitMap(6913);
DisplayBitMap(4354);
DisplayBitMap(7940);
delay(200);
DisplayBitMap(1024);
DisplayBitMap(1031);
DisplayBitMap(2565);
DisplayBitMap(4359);
DisplayBitMap(6914);
DisplayBitMap(5391);
DisplayBitMap(6914);
DisplayBitMap(4357);
DisplayBitMap(7944);
delay(200);
DisplayBitMap(1024);
DisplayBitMap(1039);
DisplayBitMap(2570);
DisplayBitMap(4366);
DisplayBitMap(6916);
DisplayBitMap(5407);
DisplayBitMap(6916);
DisplayBitMap(4362);
DisplayBitMap(7953);
delay(200);
DisplayBitMap(1024);
DisplayBitMap(1055);
DisplayBitMap(2581);
DisplayBitMap(4381);
DisplayBitMap(6920);
DisplayBitMap(5438);
DisplayBitMap(6920);
DisplayBitMap(4372);
DisplayBitMap(7970);
delay(200);
DisplayBitMap(1024);
DisplayBitMap(1086);
DisplayBitMap(2602);
DisplayBitMap(4410);
DisplayBitMap(6928);
DisplayBitMap(5500);
DisplayBitMap(6928);
DisplayBitMap(4392);
DisplayBitMap(8004);
delay(200);
DisplayBitMap(1024);
DisplayBitMap(1148);
DisplayBitMap(2644);
DisplayBitMap(4468);
DisplayBitMap(6944);
DisplayBitMap(5600);
DisplayBitMap(6944);
DisplayBitMap(4432);
DisplayBitMap(8072);
delay(200);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(2004);
DisplayBitMap(3316);
DisplayBitMap(5280);
DisplayBitMap(12256);
DisplayBitMap(5664);
DisplayBitMap(3152);
DisplayBitMap(136);
delay(200);
DisplayBitMap(0);
DisplayBitMap(15996);
DisplayBitMap(5460);
DisplayBitMap(2292);
DisplayBitMap(5408);
DisplayBitMap(16096);
DisplayBitMap(32);
DisplayBitMap(80);
DisplayBitMap(136);
delay(200);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(2004);
DisplayBitMap(3316);
DisplayBitMap(5280);
DisplayBitMap(12256);
DisplayBitMap(5664);
DisplayBitMap(3152);
DisplayBitMap(136);
delay(200);
DisplayBitMap(1024);
DisplayBitMap(1148);
DisplayBitMap(2644);
DisplayBitMap(4468);
DisplayBitMap(6944);
DisplayBitMap(5624);
DisplayBitMap(6944);
DisplayBitMap(4432);
DisplayBitMap(8072);
delay(200);
DisplayBitMap(0);
DisplayBitMap(124);
DisplayBitMap(84);
DisplayBitMap(116);
DisplayBitMap(32);
DisplayBitMap(112);
DisplayBitMap(168);
DisplayBitMap(80);
DisplayBitMap(136);
delay(200);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(604);
DisplayBitMap(340);
DisplayBitMap(508);
delay(200);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(604);
DisplayBitMap(340);
DisplayBitMap(252);
delay(200);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(604);
DisplayBitMap(340);
DisplayBitMap(252);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(12288);
DisplayBitMap(6144);
DisplayBitMap(2350);
DisplayBitMap(14506);
DisplayBitMap(12414);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(14336);
DisplayBitMap(3072);
DisplayBitMap(1326);
DisplayBitMap(15530);
DisplayBitMap(14462);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(7168);
DisplayBitMap(13824);
DisplayBitMap(9006);
DisplayBitMap(16042);
DisplayBitMap(7294);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(7168);
DisplayBitMap(13824);
DisplayBitMap(9006);
DisplayBitMap(16042);
DisplayBitMap(7294);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(7168);
DisplayBitMap(8704);
DisplayBitMap(9006);
DisplayBitMap(16042);
DisplayBitMap(7294);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(7168);
DisplayBitMap(9006);
DisplayBitMap(8874);
DisplayBitMap(15998);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(7168);
DisplayBitMap(9006);
DisplayBitMap(8874);
DisplayBitMap(15998);
delay(400);
DisplayBitMap(1879);
DisplayBitMap(338);
DisplayBitMap(882);
DisplayBitMap(1874);
DisplayBitMap(0);
DisplayBitMap(3374);
DisplayBitMap(5474);
DisplayBitMap(5542);
DisplayBitMap(3374);
}
}
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<= 9) line = 0;
}
void getLength(char* charArray, int* lengthPtr, int* pixelPtr) {
/* Finds the length of a string in terms of characters
and pixels and assigns them to the variable at
addresses lengthPtr and pixelPtr, respectively. */
int charCount = 0, pixelCount = 0;
char * charPtr = charArray;
// Count chars until newline or null character reached
while (*charPtr != ” && *charPtr != ‘\n’) {
charPtr++;
charCount++;
/* Increment pixelCount by the number of pixels
the current character takes up horizontally. */
pixelCount += Font::Draw(*charPtr,-SCREEN_WIDTH,0);
}
*pixelPtr = pixelCount;
*lengthPtr = charCount;
}
Love is an interactive animation. It begins with two different hearts beating, alternating, far apart. When the switch is pressed the two hearts get together and become one heart that beats. Then the word LOVE scrolls.
The box has on the back the on/off power.
By Jason Kim, Rachel Law, and Freddie Andrade
1)Pulse Sensor Description Presentation
2)Pulse Sensor Working with LED & working with LOL Shield
LED Arduino Code and Processing Code (from http://www.pulsesensor.com)
LOL Shield Arduino Code
#include <Charliplexing.h> //Imports the library, which needs to be byte line = 0; //Row counter char buffer[10]; int value; // VARIABLES unsigned long time; // Holds current time for pulse rate calculation unsigned long lastTime; // Used for calculating time between beats int Sensor; // Holds current analog Sensor Reading int lastSensor; // Used to find waveform direction int Peak; // Holds value of peak in waveform int Trough; // Holds value of trough in waveform int beats[10]; // Array to collect time between beats for calculating BPM int beatCounter = 0; // Used to hold position in beats array int QuantifiedSelf; // Used to hold the heart rate value (BPM) int drop; // Holds the amplitude of waveform int fadeRate = 10; // when arduino finds a heartbeat, it will fade an LED on pin 11 (PWM) int Fade = 0; // Fade variable will set PWM boolean falling = false; // used to keep track of waveform direction // PINS int LED = 13; // pin 13 LED blinks on each pulse int dimLED = 11; // LED on pin 11 fades with each pulse int PulseSensor = 5; // Pulse Sensor purple wire connected to analog pin 5 void setup() { LedSign::Init(); // pinMode(LED, OUTPUT); // set the LED pins as outputs // pinMode(dimLED, OUTPUT); Serial.begin(115200); // start the hardware serial block and set the baud rate lastTime = millis(); // initialize lastTime variable } void loop() { Sensor = analogRead(PulseSensor); // take a reading Serial.print("s"); // send raw analog data to Processing sketch (or other) Serial.println(Sensor); // 's' = Raw Sensor Data // USE WITH LED ON PIN 11 FOR FADE EFFECT // Fade -= fadeRate; // Fade variable set to 255 when heart beat is found // Fade = constrain(Fade,0,255); // these lines fade the LED // analogWrite(dimLED,Fade); // KEEP TRACK OF THE DIRECTION OF THE WAVEFORM if (falling == false){ // if the sensor values are rising if (Sensor < lastSensor-1){ // if current reading is less than last reading - noise falling = true; // a peak has been reached Serial.print("P"); // send peak value to Processing scketch (or other) Serial.println(Peak); // 'P' = Peak in waveform // digitalWrite(LED,LOW); // turn off pin 13 LED // myHeart(); smallHeart(); }else if(Sensor > lastSensor){ // otherwise, if current reading is bigger, values are still rising Peak = Sensor; // record the next potential peak lastSensor = Sensor; // keep track of rising signal } } if (falling == true){ // if the sensor values are falling if (Sensor > lastSensor){ // if current reading is bigger than last reading falling = false; // a trough has been reached Serial.print("T"); // send trough value to Processing sketch (or other) Serial.println(Trough); // 'T' = Trough in waveform drop = Peak - Trough; // difference = signal amplitude Peak = 0; // setting Peak to 0 here helps get rid of noise // THIS IF STATEMENT IS HOW THE HEARTBEAT IS FOUND IN PULSE SENSOR WAVEFORM if (drop > 4 && drop <60){ // ignore noise in signal. adjust as needed timeBeat(); // go work out the BPM Serial.print("d"); // send the amplitude to Processing Sketch (or other) Serial.println(drop); // 'd' = amplitude of waveform // digitalWrite(LED,HIGH); // start pin 13 LED blink bigHeart(); // Fade = 255; // set fading LED to high brightness } }else if (Sensor < lastSensor){ // otherwise, if current reading is smaller weʻre still falling Trough = Sensor; // record the next potential trough lastSensor = Sensor; // keep track of falling signal } } delay(150); //SLOW DOWN!!!!!!!! (LOL SHIELD) // break for 20mS. Processing frame-rate = 100. }// END VOID LOOP void timeBeat(){ time = millis(); // take note of the current time beats[beatCounter] = time - lastTime; // record miliseconds since the last pulse in beats array lastTime = time; // stay up to date! beatCounter ++; // move array pointer to next position in array if (beatCounter == 10){ // if we've taken 10 readings, it's time to derive heart rate QuantifiedSelf = getBPM(); // go derive the heart rate Serial.print("q"); // send the heart rate to Processing sketch (or other) Serial.println(QuantifiedSelf); // 'q' = heart rate beatCounter = 0; } }// END OF timeBeat FUNCTION // This function will return a value for heart rate (Beats Per Minute) int getBPM(){ int dummy; // used in sorting int mean; // used in averaging boolean done = false; // clear sorting flag // this simple sorting routine will arrange values in the beat array from lowest to highest while(done != true){ done = true; for (int j=0; j<9; j++){ // simple swap sorts numbers from lowest to highest if (beats[j] > beats[j + 1]){ // sorting numbers here dummy = beats[j + 1]; beats [j+1] = beats[j] ; beats[j] = dummy; done = false; } } } // this FOR loop selects the longer beat time values to avoid incorrect heart rate readings for(int k=1; k<9; k++){ // exclude lowest and highest values from averaging mean += beats[k]; // add beat times together } mean /=8; // averaging mean = 60000/mean; // devide 60 seconds by average pulse length return mean; // return beats per minute }// END OF getBPM function void smallHeart() { // delay(2000); DisplayBitMap(0); DisplayBitMap(0); DisplayBitMap(288); DisplayBitMap(720); DisplayBitMap(528); DisplayBitMap(528); DisplayBitMap(288); DisplayBitMap(192); DisplayBitMap(0); } void bigHeart() { // delay(100); DisplayBitMap(0); DisplayBitMap(816); DisplayBitMap(1224); DisplayBitMap(2052); DisplayBitMap(2052); DisplayBitMap(1032); DisplayBitMap(528); DisplayBitMap(288); DisplayBitMap(192); } 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<<led)) { LedSign::Set(led, line, 1); } else { LedSign::Set(led, line, 0); } } line++; if(line >= 9) line = 0; }
code zip: http://www.mediafire.com/file/agk56oug5gqwub5/actuallyworking.zip
Here is my first LOL shield iteration.
Code:
#include <Charliplexing.h> //Imports the library, which needs to be
const int buttonPin = A4; // the number of the pushbutton pin
byte line = 0; //Row counter
char buffer[10];
int value;
int buttonState = 0;
void setup()
{ Serial.begin(9600);
LedSign::Init(); //Initializes the screen
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop()
{
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
Serial.println(‘low’);
delay(300);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
}
else {
Serial.println(‘0000909090909090’);
delay(300);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
delay(300);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(255);
delay(300);
DisplayBitMap(63);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(255);
DisplayBitMap(511);
delay(300);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(255);
DisplayBitMap(255);
DisplayBitMap(511);
delay(300);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(255);
DisplayBitMap(255);
DisplayBitMap(511);
DisplayBitMap(511);
delay(300);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(127);
DisplayBitMap(255);
DisplayBitMap(255);
DisplayBitMap(511);
DisplayBitMap(1023);
delay(300);
DisplayBitMap(31);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(127);
DisplayBitMap(127);
DisplayBitMap(255);
DisplayBitMap(1023);
DisplayBitMap(2047);
delay(300);
DisplayBitMap(31);
DisplayBitMap(31);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(127);
DisplayBitMap(255);
DisplayBitMap(1023);
DisplayBitMap(2047);
delay(300);
DisplayBitMap(15);
DisplayBitMap(31);
DisplayBitMap(31);
DisplayBitMap(63);
DisplayBitMap(63);
DisplayBitMap(127);
DisplayBitMap(255);
DisplayBitMap(511);
DisplayBitMap(2047);
delay(300);
DisplayBitMap(7);
DisplayBitMap(15);
DisplayBitMap(31);
DisplayBitMap(31);
DisplayBitMap(31);
DisplayBitMap(63);
DisplayBitMap(255);
DisplayBitMap(511);
DisplayBitMap(2047);
delay(300);
DisplayBitMap(3);
DisplayBitMap(7);
DisplayBitMap(7);
DisplayBitMap(15);
DisplayBitMap(31);
DisplayBitMap(63);
DisplayBitMap(511);
DisplayBitMap(2047);
DisplayBitMap(4095);
delay(300);
DisplayBitMap(1);
DisplayBitMap(3);
DisplayBitMap(3);
DisplayBitMap(7);
DisplayBitMap(15);
DisplayBitMap(31);
DisplayBitMap(1023);
DisplayBitMap(2047);
DisplayBitMap(8191);
delay(300);
DisplayBitMap(0);
DisplayBitMap(3);
DisplayBitMap(3);
DisplayBitMap(7);
DisplayBitMap(15);
DisplayBitMap(63);
DisplayBitMap(1023);
DisplayBitMap(4095);
DisplayBitMap(16383);
delay(300);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(3);
DisplayBitMap(3);
DisplayBitMap(7);
DisplayBitMap(15);
DisplayBitMap(1023);
DisplayBitMap(8191);
DisplayBitMap(16383);
delay(300);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(3);
DisplayBitMap(7);
DisplayBitMap(15);
DisplayBitMap(2047);
DisplayBitMap(16383);
DisplayBitMap(16383);
delay(300);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(15);
DisplayBitMap(255);
DisplayBitMap(8191);
DisplayBitMap(16383);
DisplayBitMap(16383);
delay(300);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(2047);
DisplayBitMap(16383);
DisplayBitMap(16383);
DisplayBitMap(16383);
delay(300);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(16383);
DisplayBitMap(16383);
DisplayBitMap(16383);
DisplayBitMap(16383);
delay(300);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(14336);
DisplayBitMap(16380);
DisplayBitMap(16383);
DisplayBitMap(16383);
DisplayBitMap(16383);
delay(300);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(8192);
DisplayBitMap(12288);
DisplayBitMap(16368);
DisplayBitMap(16380);
DisplayBitMap(16383);
DisplayBitMap(16383);
}
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<<led)) {
LedSign::Set(led, line, 1);
} else {
LedSign::Set(led, line, 0);
}
}
line++;
if(line >= 9) line = 0;
}
http://arduino.cc/blog/category/sensors/galvanic-skin-response/
Oct 11: LOL homework,
Make an enclosure of your screen LOL that diffuses the light. Create software that uses dynamic scrolling text and a interactive activated animation.
Buy second Arduino
Nov 18: Show twitting Displays, Homework. Pulse Sensor and Sound group present.
Make either: A project the displays the HeartRate in a physical form (can be LOL) OR Make a Sound Message Box with 2-3 switches and 2-3 LED’s.
Nov 25: Thanks Giving No Class
Dec 2: Present Homework. Do the second assignment.
Dec 9: Present prototypes for review.
Dec 16: Presentation 2 project to guest crits.
/* Requires LoL Shield library, at least V0.2Beta http://code.google.com/p/lolshield/downloads/list And the Font.cpp from LoL_Shield-100915.zip on ikkei's page: http://web.mac.com/kxm_ikkei/Site/LoL.html Based on original TEXT SAMPLE CODE for LOL Shield for Arduino Copyright 2009/2010 Benjamin Sonntag <benjamin@sonntag.fr> http://benjamin.sonntag.fr/ (This version edited by Walfas) */ #include "Charliplexing.h" #include "Font.h" #include "WProgram.h" // Technically the number of columns of LEDs minus one #define SCREEN_WIDTH 13 // Scroll delay: lower values result in faster scrolling #define SCROLL_DELAY 80 /* How long to wait after the last letter before going back to the beginning and repeating */ #define REPEAT_DELAY 500 int textLength, totalPixels; char text[]="HI CLASS WE MADE IT THIS IS OUR LOL SHIELD PRESENTATION"; void setup() { LedSign::Init(); getLength(text, &textLength, &totalPixels); } void loop() { 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 getLength(char* charArray, int* lengthPtr, int* pixelPtr) { /* Finds the length of a string in terms of characters and pixels and assigns them to the variable at addresses lengthPtr and pixelPtr, respectively. */ int charCount = 0, pixelCount = 0; char * charPtr = charArray; // Count chars until newline or null character reached while (*charPtr != '\0' && *charPtr != '\n') { charPtr++; charCount++; /* Increment pixelCount by the number of pixels the current character takes up horizontally. */ pixelCount += Font::Draw(*charPtr,-SCREEN_WIDTH,0); } *pixelPtr = pixelCount; *lengthPtr = charCount; }
template jimmierodgers Hammer Time Excel Animation Template#include <avr/pgmspace.h> //This is in the Arduino library int blinkdelay = 75; //This basically controls brightness. Lower is dimmer int runspeed = 20; //smaller = faster int pin13 =13; int pin12 =12; int pin11 =11; int pin10 =10; int pin09 =9; int pin08 =8; int pin07 =7; int pin06 =6; int pin05 =5; int pin04 =4; int pin03 =3; int pin02 =2; const int pins[] = { pin13,pin12,pin11,pin10,pin09,pin08,pin07,pin06,pin05,pin04,pin03,pin02}; const int ledMap[126][2] ={ {pin13, pin05},{pin13, pin06},{pin13, pin07},{pin13, pin08},{pin13, pin09},{pin13, pin10},{pin13, pin11},{pin13, pin12},{pin13, pin04},{pin04, pin13},{pin13, pin03},{pin03, pin13},{pin13, pin02},{pin02, pin13}, {pin12, pin05},{pin12, pin06},{pin12, pin07},{pin12, pin08},{pin12, pin09},{pin12, pin10},{pin12, pin11},{pin12, pin13},{pin12, pin04},{pin04, pin12},{pin12, pin03},{pin03, pin12},{pin12, pin02},{pin02, pin12}, {pin11, pin05},{pin11, pin06},{pin11, pin07},{pin11, pin08},{pin11, pin09},{pin11, pin10},{pin11, pin12},{pin11, pin13},{pin11, pin04},{pin04, pin11},{pin11, pin03},{pin03, pin11},{pin11, pin02},{pin02, pin11}, {pin10, pin05},{pin10, pin06},{pin10, pin07},{pin10, pin08},{pin10, pin09},{pin10, pin11},{pin10, pin12},{pin10, pin13},{pin10, pin04},{pin04, pin10},{pin10, pin03},{pin03, pin10},{pin10, pin02},{pin02, pin10}, {pin09, pin05},{pin09, pin06},{pin09, pin07},{pin09, pin08},{pin09, pin10},{pin09, pin11},{pin09, pin12},{pin09, pin13},{pin09, pin04},{pin04, pin09},{pin09, pin03},{pin03, pin09},{pin09, pin02},{pin02, pin09}, {pin08, pin05},{pin08, pin06},{pin08, pin07},{pin08, pin09},{pin08, pin10},{pin08, pin11},{pin08, pin12},{pin08, pin13},{pin08, pin04},{pin04, pin08},{pin08, pin03},{pin03, pin08},{pin08, pin02},{pin02, pin08}, {pin07, pin05},{pin07, pin06},{pin07, pin08},{pin07, pin09},{pin07, pin10},{pin07, pin11},{pin07, pin12},{pin07, pin13},{pin07, pin04},{pin04, pin07},{pin07, pin03},{pin03, pin07},{pin07, pin02},{pin02, pin07}, {pin06, pin05},{pin06, pin07},{pin06, pin08},{pin06, pin09},{pin06, pin10},{pin06, pin11},{pin06, pin12},{pin06, pin13},{pin06, pin04},{pin04, pin06},{pin06, pin03},{pin03, pin06},{pin06, pin02},{pin02, pin06}, {pin05, pin06},{pin05, pin07},{pin05, pin08},{pin05, pin09},{pin05, pin10},{pin05, pin11},{pin05, pin12},{pin05, pin13},{pin05, pin04},{pin04, pin05},{pin05, pin03},{pin03, pin05},{pin05, pin02},{pin02, pin05} }; uint16_t BitMap[][9] PROGMEM = { {0, 0, 0, 1, 0, 0, 0, 1, 0}, {1, 1, 1, 2, 1, 0, 1, 2, 0}, {3, 2, 3, 5, 3, 1, 2, 4, 0}, {7, 4, 7, 10, 7, 2, 5, 8, 0}, {14, 10, 14, 20, 14, 5, 10, 17, 0}, {28,20, 28, 8, 62, 8, 20, 34, 0}, {56, 40, 56, 20, 56, 80, 40, 68, 0}, {112, 80, 112, 32, 248, 32, 80, 136, 0}, {224, 160, 224, 320, 224, 80, 160, 272, 0}, {448, 320, 448, 128, 992, 128, 320, 544, 0}, {896, 640, 896, 320, 896, 1280, 640, 1088}, {1792, 1280, 1792, 512, 3968, 512, 1280, 2176, 0}, {3584, 2560, 3584, 5120, 3584, 1280, 2560, 4352, 0}, {7168, 5120, 7168, 2048, 15872, 2048, 5120, 8704, 0}, {14336, 10240, 14336, 5120, 14336, 4096, 10240, 1024, 0}, {12288, 4096, 12288, 8192, 14336, 8192, 4096, 2048, 0}, {8192, 8192, 8192, 4096, 8192, 0, 8192, 4096, 0}, {0, 0, 0, 0, 8192, 0, 0, 8192, 0}, {8192, 8192, 8192, 4096, 8192, 0, 8192, 4096, 0}, {12288, 4096, 12288, 8192, 14336, 8192, 4096, 2048, 0}, {14336, 10240, 14336, 5120, 14336, 4096, 10240, 1024, 0}, {7168, 5120, 7168, 2048, 15872, 2048, 5120, 8704, 0}, {3584, 2560, 3584, 5120, 3584, 1280, 2560, 4352, 0}, {1792, 1280, 1792, 512, 3968, 512, 1280, 2176, 0}, {896, 640, 896, 320, 896, 1280, 640, 1088}, {448, 320, 448, 128, 992, 128, 320, 544, 0}, {224, 160, 224, 320, 224, 80, 160, 272, 0}, {112, 80, 112, 32, 248, 32, 80, 136, 0}, {56, 40, 56, 20, 56, 80, 40, 68, 0}, {28,20, 28, 8, 62, 8, 20, 34, 0}, {14, 10, 14, 20, 14, 5, 10, 17, 0}, {7, 4, 7, 10, 7, 2, 5, 8, 0}, {3, 2, 3, 5, 3, 1, 2, 4, 0}, {1, 1, 1, 2, 1, 0, 1, 2, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0}, {18000} }; void setup() { blinkall(2); // useful for testing } void loop() { //sequenceon(); // useful for testing DisplayBitMap(); } void turnon(int led) { int pospin = ledMap[led][0]; int negpin = ledMap[led][1]; pinMode (pospin, OUTPUT); pinMode (negpin, OUTPUT); digitalWrite (pospin, HIGH); digitalWrite (negpin, LOW); } void alloff() { DDRD = B00000010; DDRB = B00000000; } void DisplayBitMap() { boolean run=true; byte frame = 0; byte line = 0; unsigned long data; while(run == true) { for(int i = 0; i < runspeed; i++) { for(line = 0; line < 9; line++) { data = pgm_read_word_near (&BitMap[frame][line]); // fetch data from program memory if (data==18000){ run=false; } else for (byte led=0; led<14; ++led) { if (data & (1<<led)) { turnon((line*14)+led); delayMicroseconds(blinkdelay); alloff(); } else { delayMicroseconds(blinkdelay); } } } } frame++; } } void blinkall(int numblink) { alloff(); for(int n = 0;n < numblink;n++) { for(int i = 0; i < runspeed; i++) { for(int j = 0; j < 126; j++) { turnon(j); delayMicroseconds(blinkdelay); alloff(); } } delay(500); } } void sequenceon() { for(int i = 0; i < 126; i++) { turnon(i); delay(800); alloff(); delay(800); } }
Here is the Kitteh pumpkin, also known as the Cat-O-Lantern.
It is very temperamental and has a lot to say about physical contact.
It has two individual LEDs for eyes, driven by pin 2, eight LEDs in series for the mouth driven by pin 5, and a PING ultrasonic sensor driven by pin 7.
The PING ultrasonic sensor discriminates between two states.
The ground state is when there is a distance of at least 50cm between the PING sensor and anything. In the ground state, the eyes blink randomly and the mouth pulsates slowly.
When something comes closer than 50cm, the active state takes over, making the eyes blink rapidly and the mouth pulsate fast.
It returns to normal once the distance of 50cm is restored.
Pumpkin-Sky Lamp
The concept is a lamp that interacts with the environment.
The lamp consists on a black-pumpkin, as night, which has blue LEDs and one RGB Led.
Every time the light of the room is turned off, when it becomes dark, the blue LEDs light up and there is one Led that is purple.
When the PIR motion sensor is activated, when someone is near the lamp, all of the LEDs become blue and they start blinking.
When the room light is turn on, and the room lights up, the lamp turns off.
The Pumpkintstein sister is a life loving pumpkin that loves to eat and receive a lot of attention. She makes happy sounds when you rub her single pot ear and has peaceful, deep-blue LED eyes. With her super sensitive maxsonar nose, she can detected if you walk away, then her eyes will turn red to express how disappointed she is. The Pumpkintstein brother has the exact opposite nature. He hates when people get too close to him, and his eyes turn back green when you give hime some space, peace and quiet. Both of the pumpkins loooooove candies. If you feed them with candies, their eyes blink in happiness and they produce cheerful tunes. All this will happen thanks to lighten mouths equipped with photo resistors that respond to the candies blocking the direct light.
//Pumpkinstein code:\\ int lightPin = 3; //Photo resistor = A3 int threshold = 250; const int pwPin = 6; long pulse, inches, cm; //eyes: int redEye = 3; int blueEye = 4; //Green //mouth: #include "pitches.h" int melody[] = { NOTE_C5,NOTE_C7, NOTE_C6, NOTE_C7, NOTE_C5, NOTE_D4, NOTE_C6, NOTE_C7}; int noteDurations[] = { 4, 8, 8, 4,6,4,6,4 }; // speakers: int speakerPin1 = 9; int pitchPin1 = 0; int readingPitch1 = 0; int frequency1 = 0; int prevVal1 = 0; int currentVal1 = 0; long lastTimeMoved = 0; int shakeTime = 1000; void setup(){ Serial.begin(9600); pinMode(redEye, OUTPUT); pinMode(blueEye, OUTPUT); } void loop(){ if(analogRead(lightPin) < threshold ){ for (int thisNote = 0; thisNote < 8; thisNote++) { int noteDuration = 600/noteDurations[thisNote]; tone(speakerPin1, melody[thisNote],noteDuration); int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // noTone(speakerPin1); } blink2(); blink1(); delay(100); } pulse = pulseIn(pwPin, HIGH); //147uS per inch inches = pulse/147; //change inches to centimeters cm = inches * 2.54; Serial.print("sonar value = "); Serial.print(inches); Serial.print("in, "); Serial.print(cm); Serial.print("cm"); Serial.println(); if (inches > 45){ digitalWrite(redEye, HIGH); digitalWrite(blueEye,LOW); } else { digitalWrite(redEye, LOW); digitalWrite(blueEye,HIGH); } readingPitch1 = analogRead(pitchPin1); currentVal1 = analogRead(pitchPin1); if (prevVal1 != currentVal1) { frequency1 = map(readingPitch1, 0, 1023, 3000, 5000); // 100Hz -> 5kHz Serial.print("frequency1 = "); Serial.println(frequency1); tone(speakerPin1, frequency1, random(100)); } if(millis() - lastTimeMoved > shakeTime){ noTone(pitchPin1); } else { lastTimeMoved = millis(); prevVal1 = currentVal1; } delay(10); } //Functions:// void blink1(){ digitalWrite(blueEye, HIGH); digitalWrite(blueEye, LOW); delay(200); } void blink2(){ digitalWrite(blueEye, HIGH); digitalWrite(blueEye, LOW); delay(400); digitalWrite(blueEye, HIGH); digitalWrite(blueEye, LOW); delay(400); }</pre> <pre>
Reply