Created
August 26, 2013 07:39
-
-
Save sigma/6338909 to your computer and use it in GitHub Desktop.
teensy 7-segment display
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/************************************************************************ | |
* Teensy 3.0: Random Numbers on BCD 7-Segment Display Version: 1.00 * | |
* Functions : Random Numbers between 00 & 99. TURBO-mode, FREEZE-mode * | |
* MicroCtrlr: MK20DX128 32 bit ARM Cortex-M4 48 MHz * | |
* Arduino Shield: Alexan Digital Trainer 2 from Alexan Commercial * | |
************************************************************************ | |
* Arduino IDE v1.0.5 from http://arduino.cc/en/Main/Software * | |
* Teensyduino v1.14 from http://www.pjrc.com/teensy/td_download.html * | |
* Configuration: Teensy 3.0 on /dev/ttyACM0 * | |
* Operating System: Xubuntu Linux 13.10 Saucy Salamander (32-bit) * | |
* Created: January 27, 2013 (Arduino Mini) Revised: June 20, 2013 * | |
************************************************************************ | |
* MirandaSoft! - Pasig City, Metro Manila, Philippines * | |
* http://www.element14.com/community/blogs/mirandasoft * | |
************************************************************************ | |
* The Main Ingredients * | |
* Teensy 3.0 from http://www.pjrc.com/teensy/ * | |
* CD4511 BCD to 7-Segment Latch/Decoder (element14 Order#: 1106122) * | |
* Common Cathode 7-Seg Hyper-Red Disp (element14 Order#: 2001769) * | |
************************************************************************/ | |
int inputs1[4] = { 9, 8, 7, 6}; // A,B,C,D inputs Display 1 | |
int inputs2[4] = { 14, 15, 16, 17}; // A,B,C,D inputs Display 2 | |
int tamad = 1000; // Delay of 1000 miliseconds | |
int huli, bilang, val; // Randomly Chosen Numbers | |
int pigilin = 2; // Hold pin | |
int mabilis = 3; // Turbo pin | |
// Binary-code Decimal (BCD) | |
// These are 7-Segment Digits from 0 to 9 | |
byte BCD[16][4] ={{0,0,0,0},{1,0,0,0},{0,1,0,0},{1,1,0,0}, | |
{0,0,1,0},{1,0,1,0},{0,1,1,0},{1,1,1,0},{0,0,0,1},{1,0,0,1}}; | |
void setup() { | |
randomSeed(analogRead(A9)); //initialize the random number generator | |
for(int m = 0; m < 4; m++) { | |
pinMode(inputs2[m], OUTPUT); //set outputs for Display 2 | |
pinMode(inputs1[m], OUTPUT); //set outputs for Display 1 | |
bilang = random(100); // Enhances Randomness!!! | |
} | |
pinMode(mabilis, INPUT); // Switch: Turbo-mode | |
pinMode(pigilin, INPUT); // Switch: Freeze-mode | |
} | |
void ipakita(int pamalas) { | |
if((pamalas > 99) || (pamalas < 0)) pamalas = 00; // Error Handler | |
for(int pasig = 0; pasig < 4; pasig++){ | |
digitalWrite(inputs1[pasig], BCD[pamalas / 10][pasig]); | |
digitalWrite(inputs2[pasig], BCD[pamalas % 10][pasig]); | |
} | |
} | |
void loop() { | |
huli = bilang; | |
bilang = random(1,99); | |
// Simple Error Handler to Prevent Duplicate Numbers | |
if(huli==bilang) { | |
randomSeed(analogRead(A9)); | |
bilang = random(1,99); | |
} | |
val = digitalRead(mabilis); // TURBO mode | |
if(!val) { | |
tamad = 5000; // Not Switched: 5 Seconds | |
} | |
else { | |
tamad = 100; // Switched: 0.1 Seconds | |
} | |
ipakita(bilang); | |
delay(tamad); | |
while(digitalRead(pigilin)); // FREEZE mode | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment