0% found this document useful (0 votes)
5 views10 pages

Arduino

The document is a lab manual for an Introduction to Computing course at Vietnam National University, focusing on Arduino programming exercises. It includes various tasks related to LED animations, such as toggling LEDs, creating blinking patterns, and displaying numbers on seven-segment displays. Each exercise provides source code examples and instructions for implementation using TinkerCAD.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views10 pages

Arduino

The document is a lab manual for an Introduction to Computing course at Vietnam National University, focusing on Arduino programming exercises. It includes various tasks related to LED animations, such as toggling LEDs, creating blinking patterns, and displaying numbers on seven-segment displays. Each exercise provides source code examples and instructions for implementation using TinkerCAD.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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

You might also like