lucy, the good karma night lamp.
Lucy, the magic-6-cube evolved into Lucy, the good karma night lamp. She wants to make people happy since the moment they wake up. So she turned into a night lamp that sleeps next to you and lights up your life in the darkness. When you wake up, you wake her up, and ask her if you’ll have a good day today. She then asks you to tilt her for your answer… and VOILA! You get your good karma with deep thoughts like “WORD”, “HELL YEAH”, and “BET ON IT”.
/*
LUCY, THE GOOD KARMA NIGHT LAMP
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 Monica Arias)
*/
#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
char ask[]="ASK N TILT";
// SMILEY FACE
byte line = 0; //Row counter
char buffer[10];
int value;
// BUTTON
int tiltPin = A5; // the number of the tilt sensor
int leftPin = A0;
int ledPin = A2;
int tiltState = 0; // variable for reading the tilt status
int leftState; // variable for reading the left pushbutton status
int textLength, totalPixels;
char text[10];
int r=0;
// ------------------------------------------------------------
// ------------------------------------------------------------
void setup() {
Serial.begin(9600);
LedSign::Init();
pinMode(ledPin, OUTPUT);
pinMode(tiltPin, INPUT);
pinMode(leftPin, INPUT);
}
// ------------------------------------------------------------
// ------------------------------------------------------------
void loop() {
tiltState = digitalRead(tiltPin);
leftState = digitalRead(leftPin);
// LEFT BUTTON
if (leftState == HIGH) {
digitalWrite(ledPin, LOW);
smiley();
predictions();
}
else {
digitalWrite(ledPin, HIGH);
sleeping();
}
}
// ------------------------------------------------------------
// ------------------------------------------------------------
// FUNCTION TILT SWITCH
void predictions(){
if (tiltState == 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';
text[9] = '!';
}
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';
text[9] = '!';
}
else if(r==2) {
text[0] = 'W';
text[1] = 'O';
text[2] = 'R';
text[3] = 'D';
text[4] = ' ';
text[5] = ' ';
text[6] = ' ';
text[7] = ' ';
text[8] = ' ';
text[9] = ' ';
}
else if(r==3) {
text[0] = 'B';
text[1] = 'E';
text[2] = 'L';
text[3] = 'I';
text[4] = 'E';
text[5] = 'V';
text[6] = 'E';
text[7] = ' ';
text[8] = 'I';
text[9] = 'T';
}
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);
// TILT
delay(400);
DisplayBitMap(0);
DisplayBitMap(14);
DisplayBitMap(4);
DisplayBitMap(4);
DisplayBitMap(4);
DisplayBitMap(4);
DisplayBitMap(4);
DisplayBitMap(4);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(46);
DisplayBitMap(36);
DisplayBitMap(36);
DisplayBitMap(36);
DisplayBitMap(36);
DisplayBitMap(36);
DisplayBitMap(36);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(174);
DisplayBitMap(164);
DisplayBitMap(164);
DisplayBitMap(164);
DisplayBitMap(164);
DisplayBitMap(164);
DisplayBitMap(932);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(7342);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2980);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(7342);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2980);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(7342);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2980);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
}
// FUNCTION
void sleeping(){
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(480);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(480);
DisplayBitMap(1008);
DisplayBitMap(1008);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(480);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
}
// 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;
}
For the final presentation I uploaded a demo code to show how she would work. Here’s the “fake” code.
#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;
int ledPin = A2;
// BUTTON
int inPin = A0; // the number of the input pin
int state = LOW; // the current state of the output pin
int reading; // the current reading from the input pin
int previous = HIGH; // the previous reading from the input pin
// the follow variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long time = 0; // the last time the output pin was toggled
long debounce = 200; // the debounce time, increase if the output flickers
int textLength, totalPixels;
char text[10];
int r=0;
void setup()
{
Serial.begin(9600);
LedSign::Init();
pinMode(ledPin, OUTPUT);
pinMode(inPin, INPUT);
}
void loop()
{
reading = digitalRead(inPin);
if (reading == HIGH && previous == LOW && millis() - time > debounce) {
if (state == HIGH)
state = LOW;
else
state = HIGH;
time = millis();
}
digitalWrite(ledPin, HIGH);
sleeping();
delay(100);
digitalWrite(ledPin, LOW);
smiley();
predictions();
delay(1000);
previous = reading;
}
// 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);
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);
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);
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);
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);
// TILT
delay(400);
DisplayBitMap(0);
DisplayBitMap(14);
DisplayBitMap(4);
DisplayBitMap(4);
DisplayBitMap(4);
DisplayBitMap(4);
DisplayBitMap(4);
DisplayBitMap(4);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(46);
DisplayBitMap(36);
DisplayBitMap(36);
DisplayBitMap(36);
DisplayBitMap(36);
DisplayBitMap(36);
DisplayBitMap(36);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(174);
DisplayBitMap(164);
DisplayBitMap(164);
DisplayBitMap(164);
DisplayBitMap(164);
DisplayBitMap(164);
DisplayBitMap(932);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(7342);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2980);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(7342);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2980);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(7342);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2212);
DisplayBitMap(2980);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(0);
}
// FUNCTION TILT SWITCH
void predictions(){
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';
text[9] = '!';
}
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';
text[9] = '!';
}
else if(r==2) {
text[0] = 'W';
text[1] = 'O';
text[2] = 'R';
text[3] = 'D';
text[4] = ' ';
text[5] = ' ';
text[6] = ' ';
text[7] = ' ';
text[8] = ' ';
text[9] = ' ';
}
else if(r==3) {
text[0] = 'B';
text[1] = 'E';
text[2] = 'L';
text[3] = 'I';
text[4] = 'E';
text[5] = 'V';
text[6] = 'E';
text[7] = ' ';
text[8] = 'I';
text[9] = 'T';
}
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 sleeping(){
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(480);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(480);
DisplayBitMap(1008);
DisplayBitMap(1008);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(480);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(480);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(480);
DisplayBitMap(1008);
DisplayBitMap(1008);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(480);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(480);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(480);
DisplayBitMap(1008);
DisplayBitMap(1008);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(480);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(480);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(480);
DisplayBitMap(1008);
DisplayBitMap(1008);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
delay(400);
DisplayBitMap(0);
DisplayBitMap(4386);
DisplayBitMap(3612);
DisplayBitMap(0);
DisplayBitMap(192);
DisplayBitMap(480);
DisplayBitMap(480);
DisplayBitMap(192);
DisplayBitMap(0);
}
// 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;
}






Reply