/* EPOCH PROJECT#12 - "THE 7SEGMENT DISPLAY IN THIS PROJECT WE'LL USE ONE OF THE FOUR 7-SEGMENT DISPLAYS TO DISPLAY NUMBERS FROM 0 THROUGH 9 WITHOUT THE USE OF A LIBRARY. THIS IS SO THAT YOU CAN UNDERSTAND HOW THE DISPLAY WORKS. CONNECTIONS: CONNECT GPIO PINS 2/3/4/5/6/7/8/9 TO QUAD 7-SEGMENT DISPLAY PINS A/B/C/D/E/F/G/DOT RESPECTIVELY CONNECT GPIO PIN 10 TO QUAD 7-SEGMENT DISPLAY PIN 1 */ #define pina 2 // THESE PINS CONTROL SEGMENTS 1A-G, AND DOT #define pinb 3 #define pinc 4 #define pind 5 #define pine 6 #define pinf 7 #define ping 8 #define pindot 9 #define control1 10 // This pin will be used to turn the display on and off void setup() { pinMode(pina,OUTPUT); // DECLARE ALL PINS AS OUTPUTS pinMode(pinb,OUTPUT); pinMode(pinc,OUTPUT); pinMode(pind,OUTPUT); pinMode(pine,OUTPUT); pinMode(pinf,OUTPUT); pinMode(ping,OUTPUT); pinMode(pindot,OUTPUT); pinMode(control1,OUTPUT); digitalWrite(control1,HIGH); // TURN THE DISPLAY ON. SETTING THIS TO LOW WILL REMOVE POWER FROM THE SINGLE DISPLAY. } void loop() { digitalWrite(control1,HIGH); // TURN THE DISPLAY ON zero(); // CALL FUNCTION ZERO (SEEN BELOW), THEN WAIT 500ms BEFORE CALLING FUNCTION "ONE" AND SO ON. delay(500); // WAIT HALF A SECOND (500ms) BEFORE MOVING TO THE NEXT INSTRUCTION. PLAY WITH THESE DELAYS TO MAKE THE SEGMENT CHANGE FASTER. one(); // LOOK BELOW AT THE zero() TO nine() FUNCTONS TO SEE HOW THEY WORK delay(500); two(); delay(500); three(); delay(500); four(); delay(500); five(); delay(500); six(); delay(500); seven(); delay(500); eight(); delay(500); nine(); delay(500); off(); // TURN ALL SEGMENTS OFF delay(1000); // WAIT ONE SECOND (1000ms) BEFORE STARTING THE LOOP OVER AGAIN. } // THIS IS THE END OF THE LOOP. START OVER AT THE TOP /* BELOW IS A DIAGRAM OF THE SEGMENTS AND THE DOT ON THE LOWER RIGHT SIDE A ---- F| |B | G | ---- E| |C | D | ---- O DOT */ void zero() { off(); digitalWrite(pina,LOW); // BY SETTING A SEGMENT PIN LOW, YOU TURN IT ON. digitalWrite(pinb,LOW); digitalWrite(pinc,LOW); digitalWrite(pind,LOW); digitalWrite(pine,LOW); digitalWrite(pinf,LOW); digitalWrite(ping,HIGH); // BY SETTING A SEGMENT PIN HIGH, YOU TURN IT OFF. digitalWrite(pindot,HIGH); // THIS IS THE DECIMAL ON THE LOWER RIGHT SIDE OF THE SEMGNET } void one() { off(); digitalWrite(pina,HIGH); digitalWrite(pinb,LOW); digitalWrite(pinc,LOW); digitalWrite(pind,HIGH); digitalWrite(pine,HIGH); digitalWrite(pinf,HIGH); digitalWrite(ping,HIGH); digitalWrite(pindot,HIGH); } void two() { off(); digitalWrite(pina,LOW); digitalWrite(pinb,LOW); digitalWrite(pinc,HIGH); digitalWrite(pind,LOW); digitalWrite(pine,LOW); digitalWrite(pinf,HIGH); digitalWrite(ping,LOW); digitalWrite(pindot,HIGH); } void three() { off(); digitalWrite(pina,LOW); digitalWrite(pinb,LOW); digitalWrite(pinc,LOW); digitalWrite(pind,LOW); digitalWrite(pine,HIGH); digitalWrite(pinf,HIGH); digitalWrite(ping,LOW); digitalWrite(pindot,HIGH); } void four() { off(); digitalWrite(pina,HIGH); digitalWrite(pinb,LOW); digitalWrite(pinc,LOW); digitalWrite(pind,HIGH); digitalWrite(pine,HIGH); digitalWrite(pinf,LOW); digitalWrite(ping,LOW); digitalWrite(pindot,HIGH); } void five() { off(); digitalWrite(pina,LOW); digitalWrite(pinb,HIGH); digitalWrite(pinc,LOW); digitalWrite(pind,LOW); digitalWrite(pine,HIGH); digitalWrite(pinf,LOW); digitalWrite(ping,LOW); digitalWrite(pindot,HIGH); } void six() { off(); digitalWrite(pina,LOW); digitalWrite(pinb,HIGH); digitalWrite(pinc,LOW); digitalWrite(pind,LOW); digitalWrite(pine,LOW); digitalWrite(pinf,LOW); digitalWrite(ping,LOW); digitalWrite(pindot,HIGH); } void seven() { off(); digitalWrite(pina,LOW); digitalWrite(pinb,LOW); digitalWrite(pinc,LOW); digitalWrite(pind,HIGH); digitalWrite(pine,HIGH); digitalWrite(pinf,HIGH); digitalWrite(ping,HIGH); digitalWrite(pindot,HIGH); } void eight () { off(); digitalWrite(pina,LOW); digitalWrite(pinb,LOW); digitalWrite(pinc,LOW); digitalWrite(pind,LOW); digitalWrite(pine,LOW); digitalWrite(pinf,LOW); digitalWrite(ping,LOW); digitalWrite(pindot,HIGH); } void nine() { off(); digitalWrite(pina,LOW); digitalWrite(pinb,LOW); digitalWrite(pinc,LOW); digitalWrite(pind,HIGH); digitalWrite(pine,HIGH); digitalWrite(pinf,LOW); digitalWrite(ping,LOW); digitalWrite(pindot,HIGH); } void off() // BY SETTING ALL PINS TO HIGH, ALL SEGMENTS ARE TURNED OFF { digitalWrite(pina,HIGH); digitalWrite(pinb,HIGH); digitalWrite(pinc,HIGH); digitalWrite(pind,HIGH); digitalWrite(pine,HIGH); digitalWrite(pinf,HIGH); digitalWrite(ping,HIGH); digitalWrite(pindot,HIGH); } void on() // WHEN YOU CALL THIS FUNCTION, YOU'LL TURN ALL OF THE SEGMENTS ON. { off(); digitalWrite(pina,LOW); digitalWrite(pinb,LOW); digitalWrite(pinc,LOW); digitalWrite(pind,LOW); digitalWrite(pine,LOW); digitalWrite(pinf,LOW); digitalWrite(ping,LOW); digitalWrite(pindot,LOW); } // NOTES // THERE IS LESS COMMENTING IN THIS CODE FOR A REASON. NOTHING NEW IS REALLY COVERED HERE FROM A CODE PERSPECTIVE. THERE'S A LOT OF TURNING SEGMENTS ON AND OFF WITH THE digitalRead COMMAND, AND A LOT OF FUNCTION CALLING, BUT NOT A LOT ELSE. // CHANGE THE DELAYS BETWEEN WHEN THE NUMBERS CHANGE IN void loop(). // IF YOU'RE BORED BY THIS PROJECT, THEN HOLD ON TOY OUR BUTTS. THE NEXT PROJECT IS SUGNIFICANTTLY MORE CHALLENGING.