Magic Mirror
Magic Mirror can offer validation (if you need to feel good) or motivation (if you need your butt kicked). It can tell if you are close or far away and will offer comments accordingly. Also, it knows if the lights are on or off. If they are on and you are not nearby, it will alert you to turn the lights off! It uses a bitmap image based on the Magic Mirror from Disney’s Snow White, which was created on the PC using Adobe Illustrator and Bitmap Converter and then stored as an array of hex values which are converted using the ST765 LCD library.
#include "ST7565.h"
//int ledPin = 13; // LED connected to digital pin 13
// the LCD backlight is connected up to a pin so you can turn it on & off
#define BACKLIGHT_LED 10
// pin 9 - Serial data out (SID)
// pin 8 - Serial clock out (SCLK)
// pin 7 - Data/Command select (RS or A0)
// pin 6 - LCD reset (RST)
// pin 5 - LCD chip select (CS)
ST7565 glcd(9, 8, 7, 6, 5);
#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH 16
#define numPin 6
#define maxNotes 20
const int ledPin = 13;
int numNotes = 6;
int photoCellPin = A0;
int sharpPin = A1;
int photoCell;
int prevPhotoCell;
int sharp;
int mode = 0;
int prevMode;
int buttonPin = 12;
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
unsigned long previousMillis = 0;
long interval = 5000;
boolean helloBool = true;
boolean playSound = true;
unsigned long currentMillis;
long firstAlarm = 120000;
unsigned long alarmMillis=0;
char* happyTextFar[]={"Hey, is that a new outfit? Smokin!", "Your skin's amazing! Have you been moist- urizing?"};
char* happyTextClose[]={ "Oh! You've got such beautiful eyes.","You look great! Have you been working out?"};
char* grumpyTextFar[]={"Um. Maybe you should do some jumping jacks?", "That outfit might work in about 40 pounds."};
char* grumpyTextClose[]={ "Do you have any paper bags? Or maybe a Nixon mask?","Yeah... No."};
//set up 6 buttons on pins 2-7
//int button[] = {2, 3, 4, 5, 6, 7};
//int buttonState[] = {0, 0, 0, 0, 0, 0};
/*
unsigned int array of emotions
for some reason tones will not take this as an int
If anyone has any thoughts or reasoning on this i'd love to know why, none the less this works well.
*/
static unsigned char __attribute__ ((progmem)) happyface [] = {
0x00, 0x54, 0xFE, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0,
0xE0, 0xE0, 0xF0, 0xF8, 0xFC, 0x20, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFE, 0xFE, 0xFF, 0xFE,
0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x02, 0xFF, 0xC1, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x1F, 0x3F, 0x3F,
0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F, 0x3F, 0x3F,
0x1F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x0F, 0xFF, 0xFF,
0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFC, 0x04, 0x47, 0x83,
0x82, 0x83, 0x02, 0x82, 0x84, 0x8C, 0x88, 0x3E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x34, 0x98, 0x08, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x84,
0xCC, 0xDC, 0x30, 0xF8, 0xFE, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x03, 0x07, 0x07, 0x0F, 0x1C, 0x18, 0x38, 0x11, 0x30, 0x11, 0x10, 0x18, 0x18, 0x0C, 0x2F,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x1E, 0x19, 0x31, 0x31,
0x63, 0x21, 0x63, 0x63, 0x71, 0x71, 0x31, 0x38, 0x1E, 0x1F, 0x0F, 0x07, 0xC7, 0xFF, 0x1F, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0C, 0xE8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0,
0xF0, 0x7C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x38, 0xF8, 0xF8, 0xF0, 0x70, 0x60,
0xE0, 0xC0, 0xC0, 0xC1, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xF0, 0x30,
0x30, 0x10, 0x00, 0x00, 0x00, 0xEA, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1E, 0x1C, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3C, 0x1C,
0x1E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static unsigned char __attribute__ ((progmem)) sadface [] = {
0xB8, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0,
0xF0, 0xF8, 0xFC, 0xFC, 0xFE, 0xBC, 0x00, 0x17, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF,
0xFE, 0xFE, 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x2D,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F,
0x7F, 0x7F, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x7F, 0xFF, 0x7F, 0x3F, 0x3F, 0x3F, 0x1F, 0x3F, 0x1F, 0x3F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xDF, 0xFF, 0xFF, 0xF3, 0xC0, 0xF0, 0x38, 0x18,
0x1C, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0xF0, 0xE0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0xF0, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x18,
0x18, 0x30, 0x60, 0xC0, 0xE5, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xC0,
0x03, 0x07, 0x0F, 0x1F, 0x1E, 0x3C, 0x3C, 0x38, 0x30, 0x38, 0x30, 0x30, 0x18, 0x18, 0x1C, 0x0E,
0x0F, 0x07, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x03, 0x0F, 0x1F, 0x3E, 0x3C,
0x78, 0xF0, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0x78, 0x7C, 0x7E, 0x3F, 0x3F, 0x1F, 0xCF, 0xFF, 0x1E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x03, 0x01, 0x03, 0x03, 0x03, 0x01,
0x03, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xF0, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x7F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x70, 0xB8, 0x98, 0x98, 0xDC, 0xC8,
0xC8, 0xCC, 0xCC, 0xC8, 0xC8, 0xCC, 0xC8, 0xC8, 0xC8, 0xC8, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, 0x1E, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x00, 0x00,
0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static unsigned char __attribute__ ((progmem)) youAgain [] = {
0x00, 0x06, 0x7E, 0xFE, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFE, 0x0E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7E, 0x7E, 0x7E, 0xFC,
0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xE0, 0x00, 0x80, 0xFC, 0xFF, 0x1F,
0x01, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFC, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0x07, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, 0xE0, 0xC0, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x80, 0xF0,
0xF8, 0xF8, 0xFC, 0xF8, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00,
0xF8, 0xF8, 0xC0, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x07,
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF,
0xFF, 0x3F, 0x03, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF,
0xFC, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x07, 0xFF, 0xFF,
0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x01, 0x3F, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x0F, 0x8F, 0x81, 0xC0, 0xC0, 0xE0, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x01, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x3F, 0x3E, 0x3E,
0x3E, 0x3E, 0x3F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0xFE, 0xFF, 0x07, 0x07, 0x03, 0x01, 0xE1, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0x1F, 0x3F, 0x7E, 0x7E, 0x7E, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0x3F, 0x3E,
0x3E, 0x1E, 0x0F, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3F, 0x3F,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0x3F, 0x38, 0x00, 0x00, 0x01, 0x0F, 0x1F,
0x3F, 0x3E, 0x1E, 0x0F, 0xC7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x7E, 0x3C, 0x3C, 0x0E,
0x0F, 0x3F, 0x3F, 0x20, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1C, 0x7C, 0xFC, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0x7F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x30, 0x30, 0x2C, 0x20, 0x30, 0x78,
0x30, 0x30, 0x2C, 0x20, 0x30, 0x78, 0x30, 0x30, 0x2C, 0x20, 0x30, 0x78, 0x30, 0x30, 0x2C, 0x20,
0x30, 0x78, 0x44, 0x44, 0x2C,
};
static unsigned char __attribute__ ((progmem)) later [] = {
0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFC, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
0xFF, 0xFF, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC0, 0xFF, 0xFF, 0xFF, 0x7F, 0x01, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0,
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xFF, 0xFF, 0xFF, 0x7F, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8F, 0xFF, 0xFF,
0xFF, 0xFE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x7F, 0xFF, 0xFF,
0xFB, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0F, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7F, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x2C, 0x21, 0x31, 0x79, 0x31, 0x31, 0x2D, 0x21,
0x31, 0x79, 0x31, 0x31, 0x2D, 0x21, 0x31, 0x79, 0x31, 0x30, 0x2C, 0x20, 0x31, 0x79, 0x31, 0x31,
0x2C, 0x20, 0x30, 0x78, 0x30,
};
static unsigned char __attribute__ ((progmem)) heyThere [] = {
0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0xFE, 0xFE, 0xFE, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0xFE,
0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFE, 0xFE, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFC, 0x7C, 0x7C, 0xFC, 0xF8, 0xF0, 0xC0, 0x00,
0x00, 0x78, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x78, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xF8, 0x7C, 0xFC, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0x7C, 0xFC, 0xFC, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0xF8, 0xF8,
0xC0, 0xE0, 0xF8, 0xFC, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0x7C, 0x7C, 0xFC, 0xF8, 0xF0, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, 0x1F,
0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0,
0xC1, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x3F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x03, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC7, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x03, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0xC0, 0xC0,
0xC0, 0xC1, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xC3,
0x03, 0x03, 0x03, 0x03, 0x83, 0xC3, 0xC3, 0x43, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xC0, 0xFC,
0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x83, 0x03, 0x03, 0x03, 0x03,
0xC3, 0xC3, 0xC3, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xE3, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC3, 0xC3, 0xC3, 0x00, 0x00, 0x00, 0x80, 0x87, 0x80, 0x00,
0x00, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x00, 0x00,
0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3E, 0x3E, 0x3E, 0x3F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F,
0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1F,
0x3E, 0x3E, 0x3E, 0x3F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x07, 0x1F, 0x3F, 0x3E, 0x7E, 0x3E, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00,
0x3F, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x44, 0x30, 0x2C, 0x20, 0x30, 0x78, 0x30,
0x30, 0x2C, 0x20, 0x30, 0x78, 0x30, 0x30, 0x2C, 0x20, 0x30, 0x78, 0x30, 0x30, 0x2C, 0x20, 0x30,
0x78, 0x30, 0x30, 0x2C, 0x20,
};
static unsigned char __attribute__ ((progmem)) goodLuck [] = {
0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x7C, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x3C, 0xF8, 0xF0, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0,
0xE1, 0xE1, 0xE1, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x1F, 0x0F, 0x07, 0x07, 0x0F, 0x3F, 0xFC,
0xF8, 0x80, 0x00, 0x00, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x07, 0x07, 0x0F, 0xFE, 0xFC, 0xE0, 0x00,
0x00, 0xE0, 0xFC, 0xFE, 0x1F, 0x0F, 0x0F, 0x0F, 0x0C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0xE0, 0xFC, 0xFE, 0x0F, 0x07, 0x07, 0x0F, 0x3F, 0x3E, 0x38, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80,
0xC0, 0xF0, 0xF8, 0x3E, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x07, 0x3F, 0xFF, 0xF8, 0xE0, 0xC0, 0x80,
0x80, 0x81, 0x81, 0xC1, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xC0, 0x80, 0x80,
0x80, 0x80, 0xE0, 0xFF, 0x7F, 0x07, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0x80, 0x80, 0x80, 0x80, 0xC0,
0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xF8, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0,
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x80, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x80, 0xE0, 0xF0, 0x70, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0x0F, 0x07, 0x07, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07,
0x07, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x03,
0x01, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07,
0x03, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03,
0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x3F, 0xF8, 0x80, 0x80, 0xF0, 0x3F, 0x07, 0x00, 0xC0, 0xE0, 0x60, 0x70,
0x60, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE0, 0xE0, 0xC0, 0x60, 0x60, 0xE0, 0x80, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60,
0xC0, 0x00, 0x00, 0x80, 0xE0, 0x60, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60,
0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x60, 0xFE, 0xFE, 0x60,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00,
0x7F, 0xC0, 0x80, 0x80, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x80, 0xC0, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F,
0xCC, 0x8C, 0x8C, 0x8C, 0xCF, 0x0F, 0x00, 0x7F, 0xED, 0x8C, 0x8C, 0x8C, 0xCF, 0x0F, 0x00, 0x3F,
0xFF, 0xC0, 0x80, 0x80, 0xE1, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xA4, 0xA4, 0x00, 0xA4, 0xA4, 0xA4, 0x00,
0xA4, 0xA4, 0xA4, 0x00, 0xA4, 0xA4, 0xA4, 0x00, 0xA8, 0xA8, 0xA8, 0x00, 0xA8, 0xA8, 0xA9, 0x01,
0xA8, 0xA8, 0xA8, 0x00, 0xA8,
};
static unsigned char __attribute__ ((progmem)) lightOff [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C,
0x3C, 0x3C, 0x3C, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0xFC, 0xF8,
0xF0, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0x3E,
0x3E, 0x1E, 0x1E, 0x1E, 0x3E, 0xFC, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x3C,
0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C, 0x3C,
0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xF0, 0x7F, 0x3F, 0x03, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0x03, 0x1F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03,
0x03, 0x03, 0x03, 0x07, 0xFF, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x07, 0x3F, 0xFC, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFF, 0x7F, 0x00,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F,
0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F,
0x1F, 0x1F, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F,
0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F,
0x1F, 0x1E, 0x1E, 0x1E, 0x1E, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F,
0x1F, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F,
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0x3E, 0x1F, 0x0F, 0x0F, 0x0F, 0x1F, 0x3E, 0xFC, 0xF8,
0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE1, 0xE1, 0xE1, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF,
0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0x7F, 0xFF, 0xF0, 0xC0, 0x80, 0x00,
0x00, 0x01, 0x81, 0xC1, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8F, 0x80, 0x00, 0x20, 0x20, 0x00,
0xE0, 0x40, 0x4F, 0x0F, 0xEF, 0x80, 0x80, 0x00, 0xA0, 0x80, 0x80, 0x00, 0x8F, 0x8F, 0x8F, 0x00,
0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x8F, 0x0F, 0x80, 0x80, 0x80, 0x00, 0x8F, 0x8F, 0x8F, 0x0F,
0x8F, 0x8F, 0x8F, 0x0F, 0x8F, 0x8F, 0x8F, 0x0F, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00,
0x60, 0x6F, 0x6F, 0x0F, 0x6F, 0x6F, 0x6F, 0x0F, 0x6F, 0x6F, 0x6F, 0x0F, 0x40, 0x60, 0x6F, 0x0F,
0x4F, 0x40, 0x40, 0x00, 0x20, 0x20, 0x21, 0x07, 0x47,
};
// Some stuff to check if we are playing or not
boolean bPlaying = false;
boolean bPlayNow = false;
// a bitmap of a 16x16 fruit icon
// The setup() method runs once, when the sketch starts
void setup() {
Serial.begin(9600);
Serial.print(freeRam());
// turn on backlight
pinMode(BACKLIGHT_LED, OUTPUT);
pinMode(photoCellPin, INPUT);
pinMode(sharpPin, INPUT);
pinMode(buttonPin, INPUT);
//digitalWrite(BACKLIGHT_LED, HIGH);
// initialize and set the contrast to 0x18
glcd.begin(0x18);
glcd.display(); // show splashscreen
delay(100);
glcd.clear();
glcd.display(); // show splashscreen
delay(100);
glcd.clear();
//whaWha();
}
void loop()
{
sharp = analogRead(sharpPin);
photoCell = analogRead(photoCellPin);
delay(100);
//Serial.print("PHOTOCELL: ");Serial.println(photoCell);
if(photoCell > 500 && helloBool ==true){
hello();
Serial.println("HELLO");
//116,50
}else if(photoCell < 500 && helloBool==false){
goodbye();
Serial.println("GOODBYE");
}
//Dark <= 500
//NoOne <= 50
//Close > 120
//Serial.print("SHARP: ");Serial.println(sharp);
if(photoCell>500){
if(mode ==0){
doHappyStuff();
}else if(mode==1){
doGrumpyStuff();
}
}else{
}
currentMillis = millis();
if(playSound == false && currentMillis - previousMillis > interval ){
//Serial.println("RESET");
playSound = true;
}
if(currentMillis-alarmMillis > firstAlarm){
alarm();
prevMode = mode;
mode ==2;
}
buttonState = digitalRead(buttonPin);
// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
previousMillis = currentMillis;
playSound = true;
if (buttonState == HIGH) {
buttonPushCounter++;
}
else {
//Serial.println("off");
}
}
lastButtonState = buttonState;
if (buttonPushCounter % 2 == 0) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
mode = buttonPushCounter % 2;
//glcd.drawbitmap(0, 0, logo16_glcd_bmp2, 115, 56, BLACK);
//glcd.display();
// prevPhotoCell = analogRead(photoCellPin);
}
void hello(){
helloBool = false;
// tone(2,700,100);
// delay(250);
// noTone(2);
// tone(2,700,400);
// delay(400);
// noTone(2);
//delay(250);
tone(2,300,200);
delay(400);
int note1 = 400;
for(int i=0;i<50;i++){
// play the pitch:
tone(2, note1, 10);
delay(5);
note1+=10;
}
if(mode ==0){
digitalWrite(BACKLIGHT_LED, HIGH);
glcd.clear();
glcd.drawbitmap(6,7, heyThere, 116, 50, BLACK);
glcd.display();
}else{
digitalWrite(BACKLIGHT_LED, HIGH);
glcd.clear();
glcd.drawbitmap(6,7, youAgain, 116, 50, BLACK);
glcd.display();
}
alarmMillis = currentMillis;
}
void goodbye(){
helloBool = true;
// delay(1000);
// tone(2,700,500);
// delay(250);
// noTone(2);
// tone(2,400,200);
// delay(1000);
// noTone(2);
// delay(1000);
tone(2,300,200);
delay(400);
int note1 = 300;
for(int i=0;i<50;i++){
// play the pitch:
tone(2, note1, 10);
delay(5);
note1-=2;
}
if(mode ==0){
glcd.clear();
glcd.drawbitmap(6,7, later, 116, 50, BLACK);
glcd.display();
delay(2000);
digitalWrite(BACKLIGHT_LED, LOW);
glcd.display(); // show splashscreen
//delay(100);
glcd.clear();
glcd.display(); // show splashscreen
//delay(100);
glcd.clear();
}else{
glcd.clear();
glcd.drawbitmap(6,7, goodLuck, 116, 50, BLACK);
glcd.display();
delay(2000);
digitalWrite(BACKLIGHT_LED, LOW);
glcd.display(); // show splashscreen
//delay(100);
glcd.clear();
glcd.display(); // show splashscreen
//delay(100);
glcd.clear();
}
}
void alarm(){
digitalWrite(BACKLIGHT_LED, HIGH);
glcd.clear();
glcd.drawbitmap(3,3, lightOff, 121, 61, BLACK);
glcd.display();
int note1 = 500;
for(int i=0;i<50;i++){
// play the pitch:
tone(2, note1, 10);
delay(5);
note1+=2;
}
for(int i=0;i<50;i++){
// play the pitch:
tone(2, note1, 10);
delay(5);
note1-=2;
}
if(photoCell<500){
mode = prevMode;
alarmMillis = currentMillis;
}
digitalWrite(BACKLIGHT_LED, LOW);
//123,61
}
void doHappyStuff(){
if(playSound==true){
int randomNum = random(0,2);
if(sharp>160){
//Serial.println("FROM CLOSE");
//playMelody(random(numNotes-1));
playSound = false;
previousMillis = currentMillis;
glcd.clear();
glcd.drawstring(58, 1, happyTextClose[randomNum]);
glcd.display();
glcd.drawbitmap(0,0, happyface, 55, 64, BLACK);
glcd.display();
if(randomNum ==0){
whistle();
}else{
badToTheBone();
}
alarmMillis = currentMillis;
}else if(sharp<160 && sharp>90){
Serial.println("FROM FAR");
//int randomNum = random(0,2);
//playMelody(random(numNotes-1));
playSound = false;
previousMillis = currentMillis;
glcd.clear();
glcd.drawstring(58, 1, happyTextFar[randomNum]);
glcd.display();
glcd.drawbitmap(0,0, happyface, 55, 64, BLACK);
glcd.display();
if(randomNum ==0){
whistle();
}else{
badToTheBone();
}
alarmMillis = currentMillis;
}
}
}
void doGrumpyStuff(){
if(playSound==true){
int randomNum = random(0,2);
if(sharp>160){
Serial.println("FROM CLOSE");
//playMelody(random(numNotes-1));
playSound = false;
previousMillis = currentMillis;
glcd.clear();
glcd.drawstring(58, 1, grumpyTextClose[randomNum]);
glcd.display();
glcd.drawbitmap(0,0, sadface, 55, 64, BLACK);
glcd.display();
if(randomNum ==0){
whaWha();
}else{
buzzer();
}
alarmMillis = currentMillis;
}else if(sharp<160 && sharp>90){
Serial.println("FROM FAR");
//int randomNum = random(0,2);
//playMelody(random(numNotes-1));
playSound = false;
previousMillis = currentMillis;
glcd.clear();
glcd.drawstring(58, 1, grumpyTextFar[randomNum]);
glcd.display();
glcd.drawbitmap(0,0, sadface, 55, 64, BLACK);
glcd.display();
if(randomNum ==0){
whaWha();
}else{
buzzer();
}
alarmMillis = currentMillis;
}
}
}
void badToTheBone(){
tone(2,110,300);
delay(300);
tone(2,165,300);
delay(300);
tone(2,110,300);
delay(300);
tone(2,147,300);
delay(300);
tone(2,110,300);
delay(300);
}
void whaWha(){
//int wahTone=139;
tone(2,131,400);
delay(500);
tone(2,123,500);
delay(600);
tone(2,117,600);
delay(700);
tone(2,110,800);
delay(1600);
// tone(2,110,300);
// delay(300);
}
void whistle(){
int note1 = 400;
for(int i=0;i<50;i++){
// play the pitch:
tone(2, note1, 10);
delay(5);
note1+=15;
}
note1=400;
delay(200);
for(int j=0;j<50;j++){
// play the pitch:
tone(2, note1, 10);
delay(5);
note1+=10;
}
for(int k=0;k<50;k++){
// play the pitch:
tone(2, note1, 10);
delay(5);
note1-=10;
}
}
void buzzer(){
tone(2, 500, 1000);
delay(500);
}
// this handy function will return the number of bytes currently free in RAM, great for debugging!
int freeRam(void)
{
extern int __bss_end;
extern int *__brkval;
int free_memory;
if((int)__brkval == 0) {
free_memory = ((int)&free_memory) - ((int)&__bss_end);
}
else {
free_memory = ((int)&free_memory) - ((int)__brkval);
}
return free_memory;
}
/*
char* myStrings[]={"This is string 1", "This is string 2", "This is string 3",
"This is string 4", "This is string 5","This is string 6"};
void setup(){
Serial.begin(9600);
}
void loop(){
for (int i = 0; i < 6; i++){
Serial.println(myStrings[i]);
delay(500);
}
}
glcd.drawstring(58, 1, "You look great! Have you been working out?");
glcd.display();
glcd.drawbitmap(0,0, happyface, 55, 64, BLACK);
glcd.display();
delay(2000);
glcd.clear();
glcd.drawstring(58, 2, "Hey, is that a new outfit? Smokin!");
glcd.display();
glcd.drawbitmap(0,0, happyface, 55, 64, BLACK);
glcd.display();
delay(2000);
glcd.clear();
glcd.drawstring(58, 1, "Your skin's amazing! Have you been moist- urizing?");
glcd.display();
glcd.drawbitmap(0,0, happyface, 55, 64, BLACK);
glcd.display();
delay(2000);
glcd.clear();
glcd.drawstring(58, 1, "Oh! You've got such beautiful eyes.");
glcd.display();
glcd.drawbitmap(0,0, happyface, 55, 64, BLACK);
glcd.display();
delay(2000);
glcd.clear();
//d,h,d,g
//c,b,bb,a
*/
makingtoys 3:40 am on February 18, 2011 Permalink |
great concept. Great sound effects. If you 1)use a max of two words per screen & 2) make the text “face expressions” this project will transform.
The text prompts would really be best as voice prompts. [In my view.] An iconic and graphic face with those cool sounds you have now, will make an R2D2 type experience. The user will be communicating with a mirror-bot, that has it’s quirky personality. At once and over time, the user learns to love and understand this cute little entity.