VIETNAM NATIONAL UNIVERSITY HO CHI MINH CITY
HO CHI MINH UNIVERSITY OF TECHNOLOGY
FACULTY OF APPLIED SCIENCE, FAS, HCMUT
2025-2026
INTRODUCTION TO
COMPUTING
LAB 3 - PART 1 ADUINO
Lecturer: NGUYEN THI TY
Class: CC04
Students:
Full name Student’s ID
Võ Hoàng Anh Kiệt 2550131
Contents
1 Chapter 1: LED Animations on TinkerCAD 3
1.1 Exercise 4.1: Two Toggling LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Exercise 4.2: Multiple Blinking LED . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Exercise 4.3: Seven Segment LED . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Exercise 4.4: Two Digit Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Exercise 4.5: One Way Traffic Light . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Exercise 4.6: Two Way Traffic Light . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 Exercise 4.7: Traffic Light with Timer . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.8 Exercise 4.8: Analog Clock Project . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.9 Exercise 4.9: Analog Clock with Second . . . . . . . . . . . . . . . . . . . . . . . . 10
1.10 Exercise 4.10: Finalize the Analog Clock . . . . . . . . . . . . . . . . . . . . . . . . 10
2
Part 1 - Arduino
1 Chapter 1: LED Animations on TinkerCAD
1.1 Exercise 4.1: Two Toggling LEDs
Task: Toggle the status of two LEDs (Pin 0 and 1) every 2 seconds.
1 v o i d setup ( ) {
2 pinMode ( 0 , OUTPUT ) ;
3 pinMode ( 1 , OUTPUT ) ;
4 }
5
6 v o i d loop ( ) {
7 digitalWrite ( 0 , HIGH ) ;
8 digitalWrite ( 1 , LOW ) ;
9 delay ( 2 0 0 0 ) ;
10 digitalWrite ( 0 , LOW ) ;
11 digitalWrite ( 1 , HIGH ) ;
12 delay ( 2 0 0 0 ) ;
13 }
Listing 1: Source code for Two Toggling LEDs
1.2 Exercise 4.2: Multiple Blinking LED
Task: Create at least 10 animations for LEDs series using arrays and loops.
1 v o i d setup ( ) {
2 pinMode ( 1 , OUTPUT ) ;
3 pinMode ( 2 , OUTPUT ) ;
4 pinMode ( 3 , OUTPUT ) ;
5 pinMode ( 4 , OUTPUT ) ;
6 pinMode ( 5 , OUTPUT ) ;
7 pinMode ( 6 , OUTPUT ) ;
8 pinMode ( 7 , OUTPUT ) ;
9 pinMode ( 8 , OUTPUT ) ;
10 }
11
12 v o i d loop ( ) {
13
14 f o r ( i n t i = 1 ; i <= 8 ; i++) {
15 digitalWrite ( i , HIGH ) ;
16 delay ( 1 0 0 ) ;
17 digitalWrite ( i , LOW ) ;
18 }
19 delay ( 1 0 0 0 ) ;
20
21 f o r ( i n t i = 8 ; i >= 1 ; i−−) {
22 digitalWrite ( i , HIGH ) ;
23 delay ( 1 0 0 ) ;
24 digitalWrite ( i , LOW ) ;
25 }
26 delay ( 1 0 0 0 ) ;
27
28 f o r ( i n t i = 1 ; i <= 8 ; i++) {
29 digitalWrite ( i , HIGH ) ;
30 delay ( 1 0 0 ) ;
31 }
32 delay ( 1 0 0 0 ) ;
33
34 f o r ( i n t i = 1 ; i <= 8 ; i++) {
35 digitalWrite ( i , LOW ) ;
36 delay ( 1 0 0 ) ;
37 }
38 delay ( 1 0 0 0 ) ;
39
40 f o r ( i n t count = 0 ; count < 3 ; count++) {
41 f o r ( i n t i = 1 ; i <= 8 ; i++) digitalWrite ( i , HIGH ) ;
42 delay ( 5 0 0 ) ;
43 f o r ( i n t i = 1 ; i <= 8 ; i++) digitalWrite ( i , LOW ) ;
3
Part 1 - Arduino
44 delay ( 5 0 0 ) ;
45 }
46 delay ( 1 0 0 0 ) ;
47
48 f o r ( i n t count = 0 ; count < 1 0 ; count++) {
49 f o r ( i n t i = 1 ; i <= 8 ; i++) digitalWrite ( i , HIGH ) ;
50 delay ( 5 0 ) ;
51 f o r ( i n t i = 1 ; i <= 8 ; i++) digitalWrite ( i , LOW ) ;
52 delay ( 5 0 ) ;
53 }
54 delay ( 1 0 0 0 ) ;
55
56 f o r ( i n t count = 0 ; count < 4 ; count++) {
57 f o r ( i n t i = 1 ; i <= 8 ; i++) {
58 i f ( i % 2 == 0 ) digitalWrite ( i , HIGH ) ;
59 e l s e digitalWrite ( i , LOW ) ;
60 }
61 delay ( 3 0 0 ) ;
62
63 f o r ( i n t i = 1 ; i <= 8 ; i++) {
64 i f ( i % 2 != 0 ) digitalWrite ( i , HIGH ) ;
65 e l s e digitalWrite ( i , LOW ) ;
66 }
67 delay ( 3 0 0 ) ;
68 }
69 f o r ( i n t i = 1 ; i <= 8 ; i++) digitalWrite ( i , LOW ) ;
70 delay ( 1 0 0 0 ) ;
71
72 f o r ( i n t i = 0 ; i < 4 ; i++) {
73 digitalWrite ( 4 − i , HIGH ) ;
74 digitalWrite ( 5 + i , HIGH ) ;
75 delay ( 2 0 0 ) ;
76 }
77 f o r ( i n t i = 0 ; i < 4 ; i++) {
78 digitalWrite ( 4 − i , LOW ) ;
79 digitalWrite ( 5 + i , LOW ) ;
80 delay ( 2 0 0 ) ;
81 }
82 delay ( 1 0 0 0 ) ;
83
84 f o r ( i n t i = 0 ; i < 4 ; i++) {
85 digitalWrite ( 1 + i , HIGH ) ;
86 digitalWrite ( 8 − i , HIGH ) ;
87 delay ( 2 0 0 ) ;
88 }
89 f o r ( i n t i = 1 ; i <= 8 ; i++) digitalWrite ( i , LOW ) ;
90 delay ( 1 0 0 0 ) ;
91
92 f o r ( i n t i = 1 ; i <= 1 1 ; i++) {
93 i f ( i <= 8 ) digitalWrite ( i , HIGH ) ;
94 i f ( i > 1 && i−1 <= 8 ) digitalWrite ( i −1 , HIGH ) ;
95 i f ( i > 2 && i−2 <= 8 ) digitalWrite ( i −2 , HIGH ) ;
96 i f ( i > 3 && i−3 <= 8 ) digitalWrite ( i −3 , LOW ) ;
97 delay ( 1 5 0 ) ;
98 }
99 f o r ( i n t i = 1 ; i <= 8 ; i++) digitalWrite ( i , LOW ) ;
100 delay ( 1 0 0 0 ) ;
101 }
Listing 2: Source code for Multiple Blinking LED
1.3 Exercise 4.3: Seven Segment LED
Task: Finalize the function ‘displayNumber(int i)‘ to display digits 0-9.
1 i n t pinled [ ] = { 0 , 1 , 2 , 3 , 4 , 5 , 6 } ;
2
3 v o i d setup ( ) {
4 f o r ( i n t i = 0 ; i < 7 ; i++) {
5 pinMode ( pinled [ i ] , OUTPUT ) ;
6 }
4
Part 1 - Arduino
7 }
8
9 v o i d displayNumber ( i n t i ) {
10 i f ( i == 0 ) {
11 digitalWrite ( 0 , HIGH ) ;
12 digitalWrite ( 1 , LOW ) ;
13 digitalWrite ( 2 , LOW ) ;
14 digitalWrite ( 3 , LOW ) ;
15 digitalWrite ( 4 , LOW ) ;
16 digitalWrite ( 5 , LOW ) ;
17 digitalWrite ( 6 , LOW ) ;
18
19 } e l s e i f ( i == 1 ) {
20 digitalWrite ( 0 , HIGH ) ;
21 digitalWrite ( 1 , HIGH ) ;
22 digitalWrite ( 2 , HIGH ) ;
23 digitalWrite ( 3 , LOW ) ;
24 digitalWrite ( 4 , HIGH ) ;
25 digitalWrite ( 5 , HIGH ) ;
26 digitalWrite ( 6 , LOW ) ;
27 } e l s e i f ( i == 2 ) {
28 digitalWrite ( 0 , LOW ) ;
29 digitalWrite ( 1 , HIGH ) ;
30 digitalWrite ( 2 , LOW ) ;
31 digitalWrite ( 3 , LOW ) ;
32 digitalWrite ( 4 , LOW ) ;
33 digitalWrite ( 5 , LOW ) ;
34 digitalWrite ( 6 , HIGH ) ;
35 } e l s e i f ( i == 3 ) {
36 digitalWrite ( 0 , LOW ) ;
37 digitalWrite ( 1 , HIGH ) ;
38 digitalWrite ( 2 , LOW ) ;
39 digitalWrite ( 3 , LOW ) ;
40 digitalWrite ( 4 , HIGH ) ;
41 digitalWrite ( 5 , LOW ) ;
42 digitalWrite ( 6 , LOW ) ;
43 } e l s e i f ( i == 4 ) {
44 digitalWrite ( 0 , LOW ) ;
45 digitalWrite ( 1 , LOW ) ;
46 digitalWrite ( 2 , HIGH ) ;
47 digitalWrite ( 3 , LOW ) ;
48 digitalWrite ( 4 , HIGH ) ;
49 digitalWrite ( 5 , HIGH ) ;
50 digitalWrite ( 6 , LOW ) ;
51 } e l s e i f ( i == 5 ) {
52 digitalWrite ( 0 , LOW ) ;
53 digitalWrite ( 1 , LOW ) ;
54 digitalWrite ( 2 , LOW ) ;
55 digitalWrite ( 3 , HIGH ) ;
56 digitalWrite ( 4 , HIGH ) ;
57 digitalWrite ( 5 , LOW ) ;
58 digitalWrite ( 6 , LOW ) ;
59 } e l s e i f ( i == 6 ) {
60 digitalWrite ( 0 , LOW ) ;
61 digitalWrite ( 1 , LOW ) ;
62 digitalWrite ( 2 , LOW ) ;
63 digitalWrite ( 3 , HIGH ) ;
64 digitalWrite ( 4 , LOW ) ;
65 digitalWrite ( 5 , LOW ) ;
66 digitalWrite ( 6 , LOW ) ;
67 } e l s e i f ( i == 7 ) {
68 digitalWrite ( 0 , HIGH ) ;
69 digitalWrite ( 1 , HIGH ) ;
70 digitalWrite ( 2 , LOW ) ;
71 digitalWrite ( 3 , LOW ) ;
72 digitalWrite ( 4 , HIGH ) ;
73 digitalWrite ( 5 , HIGH ) ;
74 digitalWrite ( 6 , LOW ) ;
75 } e l s e i f ( i == 8 ) {
76 digitalWrite ( 0 , LOW ) ;
77 digitalWrite ( 1 , LOW ) ;
78 digitalWrite ( 2 , LOW ) ;
79 digitalWrite ( 3 , LOW ) ;
5
Part 1 - Arduino
80 digitalWrite ( 4 , LOW ) ;
81 digitalWrite ( 5 , LOW ) ;
82 digitalWrite ( 6 , LOW ) ;
83 } e l s e i f ( i == 9 ) {
84 digitalWrite ( 0 , LOW ) ;
85 digitalWrite ( 1 , LOW ) ;
86 digitalWrite ( 2 , LOW ) ;
87 digitalWrite ( 3 , LOW ) ;
88 digitalWrite ( 4 , HIGH ) ;
89 digitalWrite ( 5 , LOW ) ;
90 digitalWrite ( 6 , LOW ) ;
91 }
92 }
93
94 v o i d loop ( ) {
95 f o r ( i n t i = 0 ; i < 1 0 ; i++) {
96 displayNumber ( i ) ;
97 delay ( 1 0 0 0 ) ;
98 }
99 }
Listing 3: Source code for Seven Segment LED
6
Part 1 - Arduino
1.4 Exercise 4.4: Two Digit Number
Task: Display numbers from 00 to 20 on two 7-segment LEDs.
1 // C++ code
2 //
3 v o i d setup ( )
4 {
5 f o r ( i n t i = 0 ; i < 1 4 ; i++){
6 pinMode ( i , OUTPUT ) ;
7 }
8 }
9
10
11 v o i d di splayNum ber1 ( i n t i ) {
12 // REUSED : Do not need t h e s o u r c e code
13 }
14
15
16
17 v o i d di splayNum ber2 ( i n t i ) {
18 // REUSED : Do not need t h e s o u r c e code
19 }
20
21
22
23
24 v o i d loop ( )
25 {
26 f o r ( i n t i = 0 ; i <= 2 0 ; i++){
27 di splayNumb er1 ( i / 1 0 ) ;
28 di splayNumb er2 ( i%10) ;
29 delay ( 1 0 0 0 ) ;
30 }
31 f o r ( i n t i = 1 9 ; i >= 0 ; i−−){
32 di splayNumb er1 ( i / 1 0 ) ;
33 di splayNumb er2 ( i%10) ;
34 delay ( 1 0 0 0 ) ;
35 }
36 }
Listing 4: Source code for Two Digit Number
1.5 Exercise 4.5: One Way Traffic Light
Task: Control a single traffic light (Red: 5s, Yellow: 2s, Green: 3s).
1 v o i d setup ( ) {
2 f o r ( i n t i = 0 ; i < 1 4 ; i++) {
3 pinMode ( i , OUTPUT ) ;
4 }
5 }
6
7
8
9
10
11 v o i d loop ( ) {
12 digitalWrite ( 8 , HIGH ) ;
13 digitalWrite ( 9 , LOW ) ;
14 digitalWrite ( 1 0 , LOW ) ;
15 delay ( 5 0 0 0 ) ;
16 digitalWrite ( 1 0 , HIGH ) ;
17 digitalWrite ( 8 , LOW ) ;
18 digitalWrite ( 9 , LOW ) ;
19 delay ( 3 0 0 0 ) ;
20 digitalWrite ( 9 , HIGH ) ;
21 digitalWrite ( 8 , LOW ) ;
22 digitalWrite ( 1 0 , LOW ) ;
23 delay ( 2 0 0 0 ) ;
7
Part 1 - Arduino
24
25 }
Listing 5: Source code for One Way Traffic Light
1.6 Exercise 4.6: Two Way Traffic Light
Task: Control a second traffic light connected to pins 11, 12, and 13.
1 v o i d setup ( ) {
2 f o r ( i n t i = 0 ; i < 1 4 ; i++) {
3 pinMode ( i , OUTPUT ) ;
4 }
5 }
6
7
8 v o i d loop ( ) {
9 digitalWrite ( 8 , HIGH ) ;
10 digitalWrite ( 9 , LOW ) ;
11 digitalWrite ( 1 0 , LOW ) ;
12 digitalWrite ( 1 1 , HIGH ) ;
13 digitalWrite ( 1 2 , LOW ) ;
14 digitalWrite ( 1 3 , LOW ) ;
15 delay ( 5 0 0 0 ) ;
16 digitalWrite ( 1 0 , HIGH ) ;
17 digitalWrite ( 8 , LOW ) ;
18 digitalWrite ( 9 , LOW ) ;
19 digitalWrite ( 1 3 , HIGH ) ;
20 digitalWrite ( 1 1 , LOW ) ;
21 digitalWrite ( 1 2 , LOW ) ;
22 delay ( 3 0 0 0 ) ;
23 digitalWrite ( 9 , HIGH ) ;
24 digitalWrite ( 8 , LOW ) ;
25 digitalWrite ( 1 0 , LOW ) ;
26 digitalWrite ( 1 2 , HIGH ) ;
27 digitalWrite ( 1 1 , LOW ) ;
28 digitalWrite ( 1 3 , LOW ) ;
29 delay ( 2 0 0 0 ) ;
30 }
Listing 6: Source code for Two Way Traffic Light
1.7 Exercise 4.7: Traffic Light with Timer
Task: Add a countdown timer using the 7-segment LED.
1 v o i d setup ( ) {
2 f o r ( i n t i = 0 ; i < 1 4 ; i++) {
3 pinMode ( i , OUTPUT ) ;
4 }
5 }
6
7 v o i d loop ( ) {
8 digitalWrite ( 8 , HIGH ) ;
9 digitalWrite ( 9 , LOW ) ;
10 digitalWrite ( 1 0 , LOW ) ;
11 digitalWrite ( 1 1 , HIGH ) ;
12 digitalWrite ( 1 2 , LOW ) ;
13 digitalWrite ( 1 3 , LOW ) ;
14 f o r ( i n t i = 4 ; i >= 0 ; i−−) {
15 displayNumber ( i ) ;
16 delay ( 1 0 0 0 ) ;
17 }
18 digitalWrite ( 1 0 , HIGH ) ;
19 digitalWrite ( 8 , LOW ) ;
20 digitalWrite ( 9 , LOW ) ;
21 digitalWrite ( 1 3 , HIGH ) ;
22 digitalWrite ( 1 1 , LOW ) ;
8
Part 1 - Arduino
23 digitalWrite ( 1 2 , LOW ) ;
24 // d e l a y ( 3 0 0 0 ) ;
25 f o r ( i n t i = 2 ; i >= 0 ; i−−) {
26 displayNumber ( i ) ;
27 delay ( 1 0 0 0 ) ;
28 }
29 digitalWrite ( 9 , HIGH ) ;
30 digitalWrite ( 8 , LOW ) ;
31 digitalWrite ( 1 0 , LOW ) ;
32 digitalWrite ( 1 2 , HIGH ) ;
33 digitalWrite ( 1 1 , LOW ) ;
34 digitalWrite ( 1 3 , LOW ) ;
35 // d e l a y ( 2 0 0 0 ) ;
36 f o r ( i n t i = 1 ; i >= 0 ; i−−) {
37 displayNumber ( i ) ;
38 delay ( 1 0 0 0 ) ;
39 }
40 }
Listing 7: Source code for Traffic Light with Timer
9
Part 1 - Arduino
1.8 Exercise 4.8: Analog Clock Project
Task: Implement helper functions ‘displayOnClock‘ and ‘clearClock‘.
1 v o i d di splayOnC lock ( i n t num ) {
2 i f ( num <= 12 ) {
3 digitalWrite ( num −1 , HIGH ) ;
4 }
5 }
6
7 v o i d clearClock ( ) {
8 f o r ( i n t i = 0 ; i < 1 2 ; i++){
9 digitalWrite ( i , LOW ) ;
10 }
11 }
Listing 8: Source code for Analog Clock Helpers
1.9 Exercise 4.9: Analog Clock with Second
Task: Update LEDs based on seconds (0-4 -> 12, 5-9 -> 1, etc.).
1 v o i d loop ( ) {
2 i f ( second % 5 == 0 && second != 0 ) {
3 clearClock ( ) ;
4 hour++;
5 }
6 i f ( hour > 1 2 ) hour = 1 ;
7 dis playOnCl ock ( hour ) ;
8 second++;
9 delay ( 1 0 0 0 ) ;
10 }
Listing 9: Source code for Analog Clock with Second
1.10 Exercise 4.10: Finalize the Analog Clock
Task: Add two more pieces of information to the clock display.
1 v o i d loop ( ) {
2 clearClock ( ) ;
3 i f ( second >= 6 0 ) {
4 second = 0 ;
5 minute++;
6 }
7 i f ( minute >= 6 0 ) {
8 minute = 0 ;
9 hour++;
10 i f ( hour > 1 2 ) hour = 1 ;
11 }
12 dis playOnCl ock ( hour ) ;
13 dis playOnCl ock ( minute / 5 ) ;
14 dis playOnCl ock ( second / 5 ) ;
15 second++;
16 delay ( 1 0 0 0 ) ;
17 }
Listing 10: Source code for Final Analog Clock
10