PoV Watch code! /******************************************************************************* LED POV (Persistance Of Vision) watch software v0.00 By: David DiPaola Hardware: -ATMega168 running at 8Mhz (internal oscillator) and 3v -External 32hz oscillator (for timekeeping) -TTL serial (for timesetting and programming) -Single momentary pushbutton on pin 0 (turns watch on for a bit) -Five 3v LEDs on pins 1-6 *******************************************************************************/ //Constants int WIDTH = 2; //Number of ms for each "column" of virtual display int DELAY = 1; //Number of ms for spacing between columns int BUTTON = 0; //Digital I/O port for the pushbutton //NOTE: This LED setup is for watches worn on the LEFT //wrist, if you wear your watch on the right, reverse //the order of the numbers below. int LED_A = 6; //Digital I/O port for LED A int LED_B = 4; //Digital I/O port for LED B int LED_C = 3; //Digital I/O port for LED C int LED_D = 2; //Digital I/O port for LED D int LED_E = 1; //Digital I/O port for LED E void setup(){ pinMode(0, INPUT); pinMode(LED_A, OUTPUT); pinMode(LED_B, OUTPUT); pinMode(LED_C, OUTPUT); pinMode(LED_D, OUTPUT); pinMode(LED_E, OUTPUT); } void loop(){ drawOne(); drawTwo(); drawColon(); drawFive(); drawNine(); drawP(); drawSpace(); drawSpace(); drawSpace(); } void setLEDs(boolean A, boolean B, boolean C, boolean D, boolean E){ digitalWrite(LED_A, A); digitalWrite(LED_B, B); digitalWrite(LED_C, C); digitalWrite(LED_D, D); digitalWrite(LED_E, E); } void drawZero(){ setLEDs(0, 1, 1, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 0, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 0, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 1, 1, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawOne(){ setLEDs(1, 0, 0, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 0, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 1, 1, 1, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 0, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawTwo(){ setLEDs(1, 0, 0, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 1, 0, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 0, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawThree(){ setLEDs(0, 1, 0, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 1, 0, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawFour(){ setLEDs(0, 0, 1, 1, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 1, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 1, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 1, 1, 1, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawFive(){ setLEDs(1, 0, 1, 1, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 1, 0, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawSix(){ setLEDs(0, 1, 1, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 1, 0, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawSeven(){ setLEDs(0, 0, 0, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 1, 0, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 0, 1, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawEight(){ setLEDs(0, 1, 0, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 1, 0, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawNine(){ setLEDs(1, 0, 0, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 1, 1, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawColon(){ setLEDs(0, 0, 0, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 1, 0, 1, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 1, 0, 1, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 0, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawA(){ setLEDs(1, 1, 1, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(1, 1, 1, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawP(){ setLEDs(1, 1, 1, 1, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 1, 0, 1); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 0, 1, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); } void drawSpace(){ setLEDs(0, 0, 0, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 0, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 0, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); setLEDs(0, 0, 0, 0, 0); delay(WIDTH); setLEDs(0, 0, 0, 0, 0); delay(DELAY); }