// Die - A class to handle the display of a six sided die, using // seven light emitting diodes // // Copyright 2012 by Walter Anderson // // This file is part of Entropy, an Arduino library. // Entropy is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Entropy 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 General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Entropy. If not, see . #include #include "Die.h" // Initializes the class with pin numbers to use as outputs for the // seven light emitting diodes use to display a die. The diodes are // arranged as: // a b // c d e // f g void Die::Initialize(int a, int b, int c, int d, int e, int f, int g) { // Store pin assignments led_a = a; led_b = b; led_c = c; led_d = d; led_e = e; led_f = f; led_g = g; // Configure pin modes pinMode(led_a, OUTPUT); digitalWrite(led_a, LOW); pinMode(led_b, OUTPUT); digitalWrite(led_b, LOW); pinMode(led_c, OUTPUT); digitalWrite(led_c, LOW); pinMode(led_d, OUTPUT); digitalWrite(led_d, LOW); pinMode(led_e, OUTPUT); digitalWrite(led_e, LOW); pinMode(led_f, OUTPUT); digitalWrite(led_f, LOW); pinMode(led_g, OUTPUT); digitalWrite(led_g, LOW); } // Turn on the appropriate LED's based upon value void Die::Show(unsigned char value) { Off(); delay(200); switch (value) { case 1: digitalWrite(led_d, HIGH); break; case 2: digitalWrite(led_b, HIGH); digitalWrite(led_f, HIGH); break; case 3: digitalWrite(led_b, HIGH); digitalWrite(led_d, HIGH); digitalWrite(led_f, HIGH); break; case 4: digitalWrite(led_a, HIGH); digitalWrite(led_b, HIGH); digitalWrite(led_f, HIGH); digitalWrite(led_g, HIGH); break; case 5: digitalWrite(led_a, HIGH); digitalWrite(led_b, HIGH); digitalWrite(led_d, HIGH); digitalWrite(led_f, HIGH); digitalWrite(led_g, HIGH); break; case 6: digitalWrite(led_a, HIGH); digitalWrite(led_b, HIGH); digitalWrite(led_c, HIGH); digitalWrite(led_e, HIGH); digitalWrite(led_f, HIGH); digitalWrite(led_g, HIGH); break; default: Error(); } } void Die::On(void) { digitalWrite(led_a, HIGH); digitalWrite(led_b, HIGH); digitalWrite(led_c, HIGH); digitalWrite(led_d, HIGH); digitalWrite(led_e, HIGH); digitalWrite(led_f, HIGH); digitalWrite(led_g, HIGH); } void Die::Off(void) { digitalWrite(led_a, LOW); digitalWrite(led_b, LOW); digitalWrite(led_c, LOW); digitalWrite(led_d, LOW); digitalWrite(led_e, LOW); digitalWrite(led_f, LOW); digitalWrite(led_g, LOW); } void Die::Error(void) { for (int i=0; i<10; i++) { delay(50); On(); delay(50); Off(); } }