/* Push button and seven segment display Circuit Connections: Seven segment common Cathode = > Gnd PIN_0 => Resistor 220Ω => Segment a PIN_1 => Resistor 220Ω => Segment b PIN_2 => Resistor 220Ω => Segment c PIN_3 => Resistor 220Ω => Segment f PIN_4 => Resistor 220Ω => Segment g PIN_5 => Resistor 220Ω => Segment d PIN_6 => Resistor 220Ω => Segment e PIN_7 => Pull-up resistor (built in) => push-button (Gnd) */ #define A_pin 0 //give the name “A_pin” to PIN_0 #define B_pin 1 //give the name “B_pin” to PIN_1 #define C_pin 2 //give the name “C_pin” to PIN_2 #define D_pin 5 //give the name “D_pin” to PIN_5 #define E_pin 6 //give the name “E_pin” to PIN_6 #define F_pin 3 //give the name “F_pin” to PIN_3 #define G_pin 4 //give the name “G_pin” to PIN_4 #define pb_pin 7 //give the name “pb_pin” to PIN_7 boolean pressAndReleased=false; //flag for push-button //The setup() function initializes and sets the initial values //It will only run once after each powerup or reset void setup() { pinMode(A_pin, OUTPUT); //Configure the PIN_0 to behave as output pinMode(B_pin, OUTPUT); //Configure the PIN_1 to behave as output pinMode(C_pin, OUTPUT); //Configure the PIN_2 to behave as output pinMode(D_pin, OUTPUT); //Configure the PIN_5 to behave as output pinMode(E_pin, OUTPUT); //Configure the PIN_6 to behave as output pinMode(F_pin, OUTPUT); //Configure the PIN_3 to behave as output pinMode(G_pin, OUTPUT); //Configure the PIN_4 to behave as output //Configure PIN_7 to behave as input with activated pull-up resistor pinMode(pb_pin, INPUT_PULLUP); } //This function loops consecutively void loop() { if (digitalRead(pb_pin)==0){ //push-button pressed delay(25); //debounce while(digitalRead(pb_pin)==0){;} //push-button released delay(25); //debounce //set the flag to true pressAndReleased=true; } //check the flag for push-button press and release if (pressAndReleased == true){ //call the function “sevenSegment” and display the numbers from 0 to 9 for (int i=0; i<10; i++){ sevenSegment(i); delay(500); //wait for 0.5 second } //set the flag to false pressAndReleased =false; //deactivate every segment digitalWrite(A_pin, LOW); digitalWrite(B_pin, LOW); digitalWrite(C_pin, LOW); digitalWrite(D_pin, LOW); digitalWrite(E_pin, LOW); digitalWrite(F_pin, LOW); digitalWrite(G_pin, LOW); } } //This function activates and deactivates the segments //so the numbers appear on the display void sevenSegment (int selection){ switch(selection){ case 0: /* display 0 - | | | | - */ digitalWrite(A_pin, HIGH); //activate segment A digitalWrite(B_pin, HIGH); //activate segment B digitalWrite(C_pin, HIGH); //activate segment C digitalWrite(D_pin, HIGH); //activate segment D digitalWrite(E_pin, HIGH); //activate segment E digitalWrite(F_pin, HIGH); //activate segment F digitalWrite(G_pin, LOW); //deactivate segment G break; case 1: /* display 1 | | */ digitalWrite(A_pin, LOW); //deactivate segment A digitalWrite(B_pin, HIGH); //activate segment B digitalWrite(C_pin, HIGH); //activate segment C digitalWrite(D_pin, LOW); //deactivate segment D digitalWrite(E_pin, LOW); //deactivate segment E digitalWrite(F_pin, LOW); //deactivate segment F digitalWrite(G_pin, LOW); //deactivate segment G break; case 2: /* display 2 - | - | - */ digitalWrite(A_pin, HIGH); //activate segment A digitalWrite(B_pin, HIGH); //activate segment B digitalWrite(C_pin, LOW); //deactivate segment C digitalWrite(D_pin, HIGH); //activate segment D digitalWrite(E_pin, HIGH); //activate segment E digitalWrite(F_pin, LOW); //deactivate segment F digitalWrite(G_pin, HIGH); //activate segment G break; case 3: /* display 3 - | - | - */ digitalWrite(A_pin, HIGH); //activate segment A digitalWrite(B_pin, HIGH); //activate segment B digitalWrite(C_pin, HIGH); //activate segment C digitalWrite(D_pin, HIGH); //activate segment D digitalWrite(E_pin, LOW); //deactivate segment E digitalWrite(F_pin, LOW); //deactivate segment F digitalWrite(G_pin, HIGH); //activate segment G break; case 4: /* display 4 | | - | */ digitalWrite(A_pin, LOW); //deactivate segment A digitalWrite(B_pin, HIGH); //activate segment B digitalWrite(C_pin, HIGH); //activate segment C digitalWrite(D_pin, LOW); //deactivate segment D digitalWrite(E_pin, LOW); //deactivate segment E digitalWrite(F_pin, HIGH); //activate segment F digitalWrite(G_pin, HIGH); //activate segment G break; case 5: /* display 5 - | - | - */ digitalWrite(A_pin, HIGH); //activate segment A digitalWrite(B_pin, LOW); //deactivate segment B digitalWrite(C_pin, HIGH); //activate segment C digitalWrite(D_pin, HIGH); //activate segment D digitalWrite(E_pin, LOW); //deactivate segment E digitalWrite(F_pin, HIGH); //activate segment F digitalWrite(G_pin, HIGH); //activate segment G break; case 6: /* display 6 | - | | - */ digitalWrite(A_pin, LOW); //deactivate segment A digitalWrite(B_pin, LOW); //deactivate segment B digitalWrite(C_pin, HIGH); //activate segment C digitalWrite(D_pin, HIGH); //activate segment D digitalWrite(E_pin, HIGH); //activate segment E digitalWrite(F_pin, HIGH); //activate segment F digitalWrite(G_pin, HIGH); //activate segment G break; case 7: /* display 7 _ | | */ digitalWrite(A_pin, HIGH); //activate segment A digitalWrite(B_pin, HIGH); //activate segment B digitalWrite(C_pin, HIGH); //activate segment C digitalWrite(D_pin, LOW); //deactivate segment D digitalWrite(E_pin, LOW); //deactivate segment E digitalWrite(F_pin, LOW); //deactivate segment F digitalWrite(G_pin, LOW); //deactivate segment G break; case 8: /* display 8 - | | - | | - */ digitalWrite(A_pin, HIGH); //activate segment A digitalWrite(B_pin, HIGH); //activate segment B digitalWrite(C_pin, HIGH); //activate segment C digitalWrite(D_pin, HIGH); //activate segment D digitalWrite(E_pin, HIGH); //activate segment E digitalWrite(F_pin, HIGH); //activate segment F digitalWrite(G_pin, HIGH); //activate segment G break; case 9: /* display 9 - | | - | */ digitalWrite(A_pin, HIGH); //activate segment A digitalWrite(B_pin, HIGH); //activate segment B digitalWrite(C_pin, HIGH); //activate segment C digitalWrite(D_pin, LOW); //deactivate segment D digitalWrite(E_pin, LOW); //deactivate segment E digitalWrite(F_pin, HIGH); //activate segment F digitalWrite(G_pin, HIGH); //activate segment G break; } }