Grade 12 Computer Engineering
Table of Contents
1. Objective ........................................... Page 1
2. Equipment ....................................... Page 1
3. Diagrams & Tables ........................ Page 2
4. Arduino Sketch Program ............. Page 3
5. Analysis .............................................. Page 4
6. Reflection .......................................... Page 5
7. References ......................................... Page 6
Culminating Project: Summative Activity
Muhammad Ahmed
Sir John A. MacDonald Collegiate
Institute
June 13, 2025
1. Objective
The objective of this project is to design, build, and program a circuit using an Arduino Uno
to display hexadecimal digits (0–F) on a 7-segment LED display. The program will show
numbers first in ascending order and then in descending order. This task integrates circuit
design, understanding of input/output components, and programming control systems.
2. Equipment
- Arduino Uno Microcontroller
- Breadboard
- Jumper wires
- 7 x 1kΩ resistors
- 1 x 7-segment common cathode LED display
- Wire stripper
- Plier
- Diagonal cutter
- Screwdriver
- Fritzing software (for circuit diagram)
- Internet access (for research)
3. Diagrams & Tables
The following diagram shows how to wire the 7-segment display to the Arduino Uno:
Arduin
A9 A8 A7 A6 A5 A4 A3 A2
o
Display dp g f e d c b a HEX
KLD-3401CR-1P
9 13 12 4 10 12 14 1
0 0 0 1 1 1 1 1 1 3F
1 0 0 0 0 0 1 1 0 06
2 0 0 1 1 1 1 1 0 3E
3 0 1 1 0 1 1 1 0 6E
4 0 1 1 0 1 1 0 1 6D
5 0 1 1 0 1 0 1 1 6B
6 0 1 1 1 1 0 1 1 7B
7 0 1 0 0 0 1 1 0 46
8 0 1 1 1 1 1 1 1 7F
9 0 1 1 0 1 1 1 1 6F
A 0 1 1 1 0 1 1 1 77
b 0 1 1 1 1 0 0 1 79
C 0 0 0 1 1 0 1 1 1B
d 0 1 1 1 1 1 0 0 7C
E 0 0 1 1 1 0 1 1 3B
F 0 0 1 1 0 0 1 1 33
4. Arduino Sketch (Code)
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
void loop() {
int time=2000;
//0
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
//1
delay(time);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
//2
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
//3
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
//4
delay(time);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
//5
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
//6
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
//7
delay(time);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
//8
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
//9
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
//A
delay(time);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
//B
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
//C
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
//D
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
//E
delay(time);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
//F
delay(time);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
5. Analysis
In this project, I connected a 7-segment display to the Arduino Uno using 7 digital output
pins. Each pin controls one segment (a–g) of the display. Using binary representations, I
mapped out how each hexadecimal digit (0–F) is displayed. I used an array to store the
binary codes and a function to display each digit.
The program first loops from 0 to 15 to display digits in ascending order, then loops from
15 to 0 for descending order. A 500ms delay between each digit makes it easy to see.
6. Reflection
This project helped me better understand how microcontrollers interact with real-world
electronic components. Writing code for efficiency made me think critically about how to
use arrays and loops. I also learned the importance of wiring accurately and debugging both
software and hardware issues.
If I had more time, I would improve the display by adding a second digit for a full two-digit
hexadecimal display (e.g., 0F, 10).
7. References
Arduino. (n.d.). Arduino Documentation. [Link]
Circuit Basics. (2015). How to Use a 7-Segment Display with an Arduino.
[Link]
Adafruit. (n.d.). 7-Segment Display Tutorial. [Link]