Tải bản đầy đủ (.pdf) (43 trang)

Giúp học sinh tiếp cận các bài toán thực tiễn khi dạy lập trình c++ thông qua nền tảng arduino

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.49 MB, 43 trang )

SÁNG KIẾN KINH NGHIỆM
Giúp học sinh tiếp cận các bài tốn thực tiễn khi dạy lập trình
C++ thơng qua nền tảng Arduino
Lĩnh vực: Tin học

1


MỤC LỤC
PHẦN I. ĐẶT VẤN ĐỀ............................................................................................................................................... 5
I. Lý do chọn đề tài ................................................................................................................................................. 5
II. Mục đích nghiên cứu ......................................................................................................................................... 6
III. Đối tượng nghiên cứu....................................................................................................................................... 6
IV. Phạm vi nghiên cứu .......................................................................................................................................... 6
V. Phương pháp nghiên cứu .................................................................................................................................. 6
VI. Tính mới của đề tài........................................................................................................................................... 6
PHẦN II. NỘI DUNG NGHIÊN CỨU ..................................................................................................................... 7
I. Cơ sở lí luận ......................................................................................................................................................... 7
1. Khái niệm năng lực ........................................................................................................................................ 7
2. Năng lực đặc thù môn Tin học theo CT CDPT 2018 .................................................................................. 7
3. Năng lực “Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông” ......................... 10
II. Cơ sở thực tiễn ................................................................................................................................................. 10
1. Việc dạy và học lập trình ở các trường THPT hiện nay ........................................................................... 10
2. Các cuộc thi khoa học kỹ thuật ................................................................................................................... 11
3. Khảo sát đánh giá thực trạng về mức độ u thích học lập trình và mối quan tâm của học sinh về các
ứng dụng của lập trình trong thực tiễn. ......................................................................................................... 11
III. Nền tảng Ardunio ........................................................................................................................................... 11
1. Arduino là gì? ............................................................................................................................................... 11
2. Cấu tạo của Arduino .................................................................................................................................... 12
3. Khả năng kết nối của Arduino .................................................................................................................... 12
4. Ứng dụng của nền tảng Arduino ................................................................................................................ 12


5. Arduino mang lại gì cho nền giáo dục? ...................................................................................................... 13
6. Một số IDE thông dụng ............................................................................................................................... 13
7. Tổng hợp các lệnh hữu ích để code Arduino ............................................................................................. 13
IV. Một số bài toán thực tiễn lập trình trên mạch Arduino .............................................................................. 16
1. Đèn tín hiệu giao thơng ................................................................................................................................ 16
2. Nhấn nút cịi kêu .......................................................................................................................................... 17
3. Đèn sáng đuổi nhau ...................................................................................................................................... 19
4. Bật/tắt đèn theo ánh sáng môi trường ........................................................................................................ 21

2


5. Chữ số trên đồng hồ điện tử (Led 7 thanh) ................................................................................................ 23
6. Xe điều khiển từ xa ...................................................................................................................................... 26
7. Xe tránh vật cản ........................................................................................................................................... 30
V. Thực nghiệm sư phạm ..................................................................................................................................... 34
1. Mục đích thực nghiệm ................................................................................................................................. 34
2. Nội dung thực nghiệm.................................................................................................................................. 34
2.1. Dạy học kết hợp ví dụ mơ phỏng các bài toán thực tiễn sử dụng mạch Arduino trong các tiết học. ..... 34
2.2. Hướng dẫn học sinh tìm hiểu bài tốn thực tiễn qua internet ................................................................ 35
2.3. Giới thiệu và chia sẻ cho học sinh biết đến các sản phẩm có tính ứng dụng thực tiễn cao trong các cuộc
thi về nghiên cứu khoa học. ........................................................................................................................... 36
3. Tổ chức thực nghiệm ................................................................................................................................... 38
4. Kết quả đạt được .......................................................................................................................................... 38
5. Một số lưu ý an toàn khi làm việc với các linh kiện .................................................................................. 39
6. Một số bài tốn thực tiễn lập trình trên mạch Arduino đã được thực hiện trong quá trình thực nghiệm.
........................................................................................................................................................................... 40
PHẦN III. KẾT LUẬN ............................................................................................................................................. 41
I. Quá trình nghiên cứu ........................................................................................................................................ 41
II. Ý nghĩa của đề tài ............................................................................................................................................ 41

III. Kiến nghị, đề xuất .......................................................................................................................................... 41
IV. Kết luận khoa học ........................................................................................................................................... 42
TÀI LIỆU THAM KHẢO......................................................................................................................................... 43
PHỤ LỤC ................................................................................................................................................................... 43

3


CÁC TỪ VIẾT TẮT
STT

Từ viết tắt

Ý nghĩa

1

KHKT

Khoa học kĩ thuật

2

PPDH

Phương pháp dạy học

3

HS


Học sinh

4

GV

Giáo viên

5

THPT

Trung học phổ thông

6

GD&ĐT

Giáo dục và đào tạo

7

CT

Chương trình

8

GDPT


Giáo dục phổ thơng

4


PHẦN I. ĐẶT VẤN ĐỀ
I. Lý do chọn đề tài
Giáo dục Việt Nam trong những năm gần đây đang tập trung đổi mới, hướng
tới một nền giáo dục tiến bộ, hiện đại, bắt kịp xu hướng của các nước trong khu vực
và trên thế giới. Một trong những mục tiêu lớn của giáo dục nước ta hiện nay đó là
hoạt động giáo dục phải gắn liền với thực tiễn.
Chính vì vậy, GDPT nước ta hiện nay đang thực hiện bước chuyển từ chương
trình giáo dục tiếp cận nội dung sang tiếp cận năng lực của người học, nghĩa là từ
chỗ quan tâm đến việc học sinh học được cái gì đến chỗ học sinh vận dụng được cái
gì qua việc học. Để đảm bảo được điều đó, nhất định phải thực hiện thành công việc
chuyển từ phương pháp dạy học theo lối “truyền thụ một chiều” sang dạy cách học,
cách vận dụng kiến thức, rèn luyện kỹ năng hình thành năng lực và phẩm chất; đồng
thời phải chuyển cách đánh giá kết quả giáo dục từ nặng về kiểm tra trí nhớ sang
kiểm tra, đánh giá năng lực vận dụng kiến thức giải quyết vấn đề.
Trong quá trình đổi mới căn bản, tồn diện giáo dục và đào tạo, cơng tác nghiên
cứu khoa học là hoạt động không thể thiếu trong trường phổ thông. Đây là một hoạt
động giúp học sinh áp dụng những kiến thức đã học vào cuộc sống, học đi đôi với
hành; đồng thời là cách tiếp cận, làm quen với phương pháp, kỹ năng nghiên cứu
khoa học, rèn luyện cách làm việc độc lập, làm việc nhóm và phát huy tính tích cực,
chủ động, tạo hứng thú trong học tập. Từ đó, phát hiện các tài năng, là cơ sở để xây
dựng và phát triển đội ngũ nhân lực chất lượng cao cho xã hội.
Chương trình Tin học 11 hiện nay còn một số hạn chế: Áp dụng cơng thức tốn
học q nhiều; Học sinh phải có kiến thức tốt về tốn học thì mới giải được các bài
tập trong sách giáo khoa; Học sinh chưa hiểu được lập trình để làm gì ngồi việc

tính tốn với các con số; Học sinh sẽ tự hỏi lập trình có ứng dụng như thế nào trong
thực tế bởi đa phần các bài tập trong sách đều liên quan đến tính tốn hoặc thuần túy
về tốn học, khơng gắn liền với thực tiễn… Vì thế để học sinh có thể vận dụng kiến
thức của môn học vào giải quyết những vấn đề thực tiễn là rất khó nếu chỉ căn cứ
vào lý thuyết thuần túy do giáo viên truyền đạt.
Từ thực tiễn công tác giảng dạy, tôi nhận thấy khi dạy lập trình, mơn học mà
địi hỏi phải tư duy sáng tạo nhiều thì cần phải có một phương pháp dạy học phù hợp
nhằm đạt hiệu quả cao, giúp học sinh có những trải nghiệm thú vị hơn với mơn học.
Vì vậy việc áp dụng các phương pháp để tạo sự hứng thú, u thích mơn học, làm
cho học sinh có thể nắm được nội dung bài học ngay tại lớp, nắm bắt kiến thức một
cách logic và có hệ thống,… đặc biệt giúp học sinh biết cách tiếp cận ngơn ngữ lập
trình để giải quyết các bài tốn ứng dụng vào thực tiễn, khơi dậy niềm đam mê
nghiên cứu khoa học trong mỗi học sinh. Qua đây tôi muốn chia sẻ một kinh nghiệm
nhỏ mà bản thân đã có được trong q trình dạy học, đó là “Giúp học sinh tiếp cận
các bài toán thực tiễn khi dạy lập trình C++ thơng qua nền tảng Arduino”.

5


II. Mục đích nghiên cứu
- Giúp học sinh tiếp cận bài tốn thực tiễn thơng qua ngơn ngữ lập trình.
- Rèn luyện cho các em khả năng biết vận dụng các kiến thức đã học về lập
trình để giải quyết một số bài toán thực tiễn đời sống hàng ngày thường gặp.
- Hình thành dần cho các em một thói quen biết đặt (giải quyết) những vấn đề
cuộc sống dưới góc độ tin học với câu hỏi: Nguồn gốc của bài tốn (hay tình huống
thực tiễn, bài tốn thực tiễn) xuất phát từ đâu? Vận dụng kiến thức nào để giải quyết
nó?
- Từng bước tạo ra niềm đam mê và xóa bỏ dần tâm lý e ngại của các em học
sinh khi học lập trình.
- Khơi dậy niềm đam mê nghiên cứu khoa học; kích thích sự sáng tạo của học

sinh; từng bước hướng các em biết nghiên cứu và vận dụng kiến thức của các môn
học vào giải quyết những vấn đề của thực tiễn đời sống.
III. Đối tượng nghiên cứu
Học sinh lớp 11 trường THPT Tương Dương 1
IV. Phạm vi nghiên cứu
- Nghiên cứu việc dạy và học ngơn ngữ lập trình C++ trong chương trình phổ
thơng
- Một số bài toán thực tiễn áp dụng khi dạy lập trình.
V. Phương pháp nghiên cứu
- Nghiên cứu lý luận: Tìm hiểu, nghiên cứu các tài liệu về các vấn đề liên quan
đến đề tài sáng kiến kinh nghiệm.
- Điều tra quan sát: Thực trạng về việc dạy học lập trình ở trường THPT và khả
năng tiếp cận bài toán thực tiễn của học sinh trung học phổ thông.
- Thực nghiệm sư phạm: Tổ chức thực nghiệm sư phạm để xem xét tính khả thi
và hiệu quả của các biện pháp sư phạm đã đề xuất.
VI. Tính mới của đề tài
- Góp phần thực hiện thành cơng đổi mới CT GDPT 2018 về phát triển năng
lực tin học cho học sinh, đặc biệt là năng lực “Giải quyết vấn đề với sự hỗ trợ của
công nghệ thông tin và truyền thông”.
- Giúp học sinh thấy được mối quan hệ tương hỗ giữa tin học với thực tiễn và
ngược lại.
- Góp phần đổi mới phương pháp giáo dục phát huy tính tích cực, chủ động,
sáng tạo của học sinh, bồi dưỡng cho học sinh phương pháp tự học, vận dụng kĩ
năng, vận dụng kiến thức,… đem lại niềm vui, hứng thú và trách nhiệm học tập cho
6


học sinh.
- Khơi gợi niềm đam mê nghiên cứu khoa học và giúp học sinh phát hiện khả
năng của bản thân.

- Giúp cho HS có những hiểu biết và hình dung ban đầu về trí tuệ nhân tạo.
- Góp phần định hướng giáo dục STEM trong Tin học.
- Sáng kiến có thể được sử dụng làm tài liệu tham khảo cho giáo viên Tin nhằm
góp phần nâng cao hiệu quả dạy học môn Tin ở trường trung học phổ thông.
PHẦN II. NỘI DUNG NGHIÊN CỨU
I. Cơ sở lí luận
1. Khái niệm năng lực
Năng lực là thuộc tính cá nhân được hình thành, phát triển nhờ vào các tố chất
và quá trình học tập, rèn luyện, cho phép con người huy động tổng hợp các kinh
nghiệm, kĩ năng và các thuộc tính cá nhân khác như hứng thú, niềm tin, ý chí,... thực
hiện đạt kết quả các hoạt động trong những điều kiện cụ thể.
Chương trình giáo dục phổ thơng 2018 đã xác định mục tiêu hình thành và phát
triển cho học sinh các năng lực cốt lõi bao gồm các năng lực chung và các năng lực
đặc thù. Năng lực chung là những năng lực cơ bản, thiết yếu hoặc cốt lõi, làm nền
tảng cho mọi hoạt động của con người trong cuộc sống và lao động nghề nghiệp.
Năng lực đặc thù là những năng lực được hình thành và phát triển trên cơ sở các
năng lực chung theo định hướng chuyên sâu, riêng biệt trong các loại hình hoạt động,
cơng việc hoặc tình huống, mơi trường đặc thù, cần thiết cho những hoạt động
chuyên biệt, đáp ứng yêu cầu của một hoạt động như toán học, âm nhạc, mĩ thuật,
thể thao...
- Các năng lực chung được hình thành, phát triển thông qua các môn học và
hoạt động giáo dục: năng lực tự chủ và tự học, năng lực giao tiếp và hợp tác, năng
lực giải quyết vấn đề và sáng tạo;
- Các năng lực đặc thù được hình thành, phát triển chủ yếu thông qua một số
môn học và hoạt động giáo dục nhất định: năng lực ngôn ngữ, năng lực tính tốn,
năng lực khoa học, năng lực cơng nghệ, năng lực tin học, năng lực thẩm mĩ và năng
lực thể chất.
2. Năng lực đặc thù môn Tin học theo CT CDPT 2018
Năng lực tin học bao gồm năm thành phần năng lực sau đây:
- NLa: Sử dụng và quản lí các phương tiện cơng nghệ thơng tin và truyền thông;

- NLb: Ứng xử phù hợp trong môi trường số;
- NLc: Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông;
- NLd: Ứng dụng công nghệ thông tin và truyền thông trong học và tự học;
7


- NLe: Hợp tác trong mơi trường số
* Chương trình mơn Tin học ở cấp THPT
Chương trình mơn Tin học ở cấp trung học phổ thông thể hiện sự phân hoá sâu
hơn về định hướng nghề nghiệp. Do vậy, chương trình có các u cầu cần đạt chung
về năng lực tin học bắt buộc đối với mọi học sinh và có các yêu cầu bổ sung riêng
tương ứng với học sinh chọn định hướng Tin học ứng dụng hoặc Khoa học máy tính.
a) Yêu cầu chung

Thành phần
năng lực

Biểu hiện

NLa

Phối hợp và sử dụng được đúng cách các hệ thống kĩ thuật số thông
dụng; mô tả được chức năng các bộ phận chính bên trong máy tính,
những thơng số cơ bản của các thiết bị số; bước đầu tuỳ chỉnh được
chế độ hoạt động cho máy tính; trình bày được khái quát mối quan
hệ giữa phần cứng, hệ điều hành và chương trình ứng dụng; biết sử
dụng một số chức năng chủ yếu trong hệ điều hành để nâng cao hiệu
quả sử dụng máy tính; so sánh được mạng LAN và Internet, biết
được khái niệm IoT; giới thiệu được chức năng cơ bản của một số
thiết bị và giao thức mạng thông dụng, sử dụng được một số ứng

dụng thiết thực trên mạng; nhận biết được vai trò quan trọng của các
hệ thống tự động hố xử lí và truyền thơng tin trong xã hội tri thức.

NLb

Trình bày và nêu được ví dụ minh họa một số quy định về quyền
thơng tin và bản quyền, tránh được những vi phạm khi sử dụng thông
tin, tài nguyên số; hiểu khái niệm, cơ chế phá hoại, lây lan của phần
mềm độc hại và cách phịng chống; biết cách tự bảo vệ thơng tin, dữ
liệu và tài khoản cá nhân; hiểu được rõ ràng hơn những mặt trái của
Internet, nhận diện được những hành vi lừa đảo, thông tin mang nội
dung xấu và biết cách xử lí phù hợp; thể hiện tính nhân văn khi tham
gia thế giới ảo; có hiểu biết tổng quan về nhu cầu nhân lực, tính chất
cơng việc của các ngành nghề trong lĩnh vực tin học cũng như các
ngành nghề khác có sử dụng ICT; sẵn sàng, tự tin, có tinh thần trách
nhiệm và sáng tạo khi tham gia các hoạt động tin học.

NLc

Biết được các cấu trúc dữ liệu cơ bản, các thuật tốn sắp xếp và tìm
kiếm cơ bản, viết được chương trình, tạo được trang web đơn giản;
biết khái niệm hệ cơ sở dữ liệu, biết kiến trúc hệ cơ sở dữ liệu tập
trung và phân tán; sử dụng được máy tìm kiếm để khai thác thơng
tin một cách hiệu quả, an tồn và hợp pháp; tìm kiếm, lựa chọn được
8


thông tin phù hợp và tin cậy; sử dụng được các công cụ kĩ thuật số
để tổ chức, chia sẻ dữ liệu và thơng tin trong q trình phát hiện và
giải quyết vấn đề; có những hiểu biết và hình dung ban đầu về trí

tuệ nhân tạo và nêu được một số ứng dụng điển hình của trí tuệ nhân
tạo.
NLd

Khai thác được các dịch vụ tra cứu và trao đổi thông tin, các nguồn
học liệu mở để cập nhật kiến thức, hỗ trợ học tập và tự học; sử dụng
được một số phần mềm hỗ trợ học tập, tự tin, sẵn sàng tìm hiểu
những phần mềm tương tự, qua đó có ý thức và khả năng tìm kiếm
tri thức mới, tìm hiểu về nghề mình quan tâm.

NLe

Biết cách hợp tác trong công việc; sử dụng được phần mềm để lập
kế hoạch, phân chia và quản lí cơng việc; lựa chọn và sử dụng được
những kênh phù hợp để trao đổi thông tin, thảo luận, hợp tác và mở
mang tri thức; giao tiếp, hoà nhập được một cách an toàn trong môi
trường số, biết tránh các tác động xấu thông qua một số biện pháp
phòng tránh cơ bản.

b) Yêu cầu bổ sung theo định hướng ICT và CS

Thành
phần năng
lực

Biểu hiện
Định hướng ICT

NLa và


– Kết nối được PC với các thiết bị số
thông dụng

NLc

– Biết tổ chức lưu trữ, khai thác được
dữ liệu phục vụ bài tốn quản lí đơn
giản trong thực tế.
– Sử dụng được một số chức năng cơ
bản của phần mềm quản lí dự án.

Định hướng CS
– Hiểu biết được ngun
lí hoạt động của hệ
thống
thơng tin bao gồm máy tính
và các thiết bị số khác.
– Hiểu được các phép
tốn nhị phân cơ bản và
ứng dụng hệ nhị phân
trong tin học.

– Biết bảo vệ dữ liệu, cài đặt hay gỡ bỏ
được phần mềm trên máy tính và thiết bị – Trình bày được sơ lược
việc thiết kế mạng.
di động khi cần thiết.

9



– Sử dụng được các phần mềm thiết kế – Biết được mục tiêu và
đồ hoạ, chỉnh sửa ảnh và làm phim
một số thành tựu của Khoa
hoạt hình để tạo ra sản phẩm số phục học dữ liệu và Học máy.
vụ học tập và đáp ứng sở thích của cá – Biết được vai trị của phần
nhân.
mềm mơ phỏng.
– Sử dụng thành thạo các phần mềm
tin học văn phòng, tạo được sản phẩm
số có chất lượng thơng qua các dự án
giải quyết vấn đề thực tế.
–Phân tích được dữ liệu với phần mềm
bảng tính.
3. Năng lực “Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và
truyền thông”
- Biết được các cấu trúc dữ liệu cơ bản, các thuật tốn sắp xếp và tìm kiếm cơ
bản, viết được chương trình, tạo được trang web đơn giản;
- Biết khái niệm hệ cơ sở dữ liệu, biết kiến trúc hệ cơ sở dữ liệu tập trung và
phân tán; sử dụng được máy tìm kiếm để khai thác thơng tin một cách hiệu quả, an
tồn và hợp pháp;
- Tìm kiếm, lựa chọn được thông tin phù hợp và tin cậy;
- Sử dụng được các công cụ kĩ thuật số để tổ chức, chia sẻ dữ liệu và thông tin
trong quá trình phát hiện và giải quyết vấn đề;
- Có những hiểu biết và hình dung ban đầu về trí tuệ nhân tạo và nêu được một
số ứng dụng điển hình của trí tuệ nhân tạo.
II. Cơ sở thực tiễn
1. Việc dạy và học lập trình ở các trường THPT hiện nay
Việc dạy học lập trình ở các trường THPT phần lớn đang chú trọng giải quyết
các bài toán về toán học. Học sinh chưa hiểu được lập trình để làm gì ngồi việc tính
tốn với các con số; Học sinh sẽ tự hỏi lập trình có ứng dụng như thế nào trong thực

tế bởi đa phần các bài tập trong sách đều liên quan đến tính tốn hoặc thuần túy về
tốn học, khơng gắn liền với thực tiễn,… Vì thế để học sinh có thể vận dụng kiến
thức của mơn học vào giải quyết những vấn đề thực tiễn là rất khó nếu chỉ căn cứ
vào lý thuyết thuần túy do giáo viên truyền đạt.
Khi dạy học để mô phỏng kiến thức bài học giáo viên chủ yếu dựa vào các phần
mềm để test thử các câu lệnh mà chưa có ví dụ trực quan để mơ phỏng. Vì thế học
sinh rất khó khăn trong việc tiếp thu kiến thức và cảm thấy rất nhàm chán khi học
về lập trình.
10


2. Các cuộc thi khoa học kỹ thuật
Trong những năm gần đây các cuộc thi khoa học kỹ thuật, sáng tạo thanh thiếu
niên nhi đồng, kiến tạo tương lai, đề án 1655,… ngày càng được lan tỏa khắp các
vùng miền với sự tham gia đông đảo của các em học sinh. Cuộc thi nhằm khuyến
khích học sinh trung học nghiên cứu khoa học; sáng tạo kĩ thuật, công nghệ và vận
dụng kiến thức của các môn học vào giải quyết những vấn đề thực tiễn; góp phần
đổi mới hình thức tổ chức dạy học gắn với phát triển văn hóa đọc; thúc đẩy giáo viên
tự bồi dưỡng nâng cao năng lực chuyên môn, nghiệp vụ,...
Cuộc thi là minh chứng điển hình cho việc thực hành, trải nghiệm, ứng dụng
kiến thức vào giải quyết một đề tài cụ thể có tính ứng dụng thực tiễn. Điều đó khích
lệ, tạo động lực cho giáo viên thay đổi để học sinh cũng thay đổi trong việc học đi
đôi với hành.
Tại trường THPT Tương Dương 1 số lượng học sinh biết đến và tham gia vào
các cuộc thi về khoa học kĩ thuật là chưa nhiều, đặc biệt là lĩnh vực lập trình cịn rất
hạn chế.
3. Khảo sát đánh giá thực trạng về mức độ u thích học lập trình và mối
quan tâm của học sinh về các ứng dụng của lập trình trong thực tiễn.

Trên đây là kết quả sát thực trạng tại trường THPT Tương Dương 1. Nhìn vào

kết quả khảo sát ở trên ta thấy rằng mức độ yêu thích học lập trình và mối quan tâm
của học sinh về những ứng dụng của lập trình trong thực tiễn là chưa nhiều.
III. Nền tảng Ardunio
1. Arduino là gì?
Arduino là nền tảng tạo mẫu điện tử mã nguồn mở, được sử dụng nhằm xây
dựng các ứng dụng điện tử tương tác với nhau hoặc với môi trường được thuận tiện,
dễ dàng hơn.
Nền tảng mẫu này giống như một máy tính thu nhỏ, giúp người dùng lập trình
và thực hiện các dự án điện tử mà không cần phải đến các công cụ chuyên dụng để
phục vụ việc nạp code.

11


Phần mềm này tương tác với thế giới bên ngoài thông qua các cảm biến điện
tử, đèn và động cơ.
2. Cấu tạo của Arduino
Phần cứng Arduino là bảng mạch nguồn mở, cùng bộ vi xử lý và chân đầu vào/
đầu ra (I/ O) để liên lạc, điều khiển các đối tượng vật lý (LED, servo, nút, v.v.). Bảng
mạch thường được cấp nguồn qua USB hoặc nguồn điện bên ngoài, cho phép cung
cấp năng lượng cho các phần cứng, cảm biến khác.
Là phần mềm nguồn mở tương tự như C++. Môi trường phát triển tích hợp
Arduino (IDE – Integrated Development Environment) cho phép bạn soạn thảo, biên
dịch code, nạp chương trình cho board.
3. Khả năng kết nối của Arduino
- Arduino hoạt động độc lập.
- Kết nối với một máy tính, cho phép truy cập dữ liệu cảm biến từ thế giới bên
ngồi và cung cấp thơng tin phản hồi.
- Các Arduino có thể liên kết với nhau.
- Mạch điều khiển Arduino có thể kết nối với các thiết bị điện tử khác.

- Arduino có khả năng kết nối với các chip điều khiển.
- Lập trình Arduino IDE có thể kết nối với nhiều nền tảng. Điều này đồng nghĩa
với việc bạn có thể khởi động trên Windows, Macintosh OSX điều hành Linux (các
hệ thống vi điều khiển khác chỉ chạy Windows).
4. Ứng dụng của nền tảng Arduino
Một số ứng dụng của Arduino trong đời sống phải kể đến như:
- Điều khiển các thiết bị cảm biến âm thanh, ánh sáng.
- Làm máy in 3D.
- Làm đàn bằng ánh sáng.
- Làm lò nướng bánh biết tweet thơng báo khi bánh đã chín.
- Arduino có khả năng đọc các thiết bị cảm biến, điều khiển động cơ,… Chính
vì thế mà mã nguồn mở này được dùng để làm bộ xử lý trung tâm của rất nhiều loại
robot.
- Arduino cịn có thể được sử dụng để tương tác với Joystick, màn hình,… khi
chơi các game như Tetrix, phá gạch, Mario,…
- Dùng để chế tạo ra máy bay không người lái.
- Điều khiển đèn giao thông, làm hiệu ứng đèn Led nhấp nháy trên các biển
quảng cáo,…

12


- Ngồi ra, Arduino cịn rất nhiều ứng dụng hữu ích khác tùy thuộc vào sự sáng
tạo của người sử dụng.
5. Arduino mang lại gì cho nền giáo dục?
Với sự phát triển nhanh chóng của mã nguồn mở Arduino IDE, việc học đã
khơng cịn là khó khăn cho những bạn đam mê về điện tử, lập trình. Vì vậy, hiện nay
Arduino đã được các trường THCS, THPT, Cao Đẳng, Đại Học đưa vào giảng dạy
và làm các đề tài và hoạt động ngoại khóa của nhà trường. Là tiền đề thúc đẩy sự
ham mê học hỏi và tiếp cận đến công nghệ một cách nhanh nhất.

Với những ý tưởng từng lóe lên trong đầu (làm một chú Robot nhện, xe điều
khiển từ xa, ngôi nhà thông minh…) và nếu muốn thực hiện nó mà chưa biết bắt đầu
từ đầu, thì Arduino là một giải pháp hồn hảo. Khơng cần phải là một coder chuyên
nghiệp cũng có thể làm được tất, đó là điều vi diệu mà Arduino IDE mang lại.
6. Một số IDE thông dụng
- Arduino IDE: Hỗ trợ ngôn ngữ C/C++. Bất kỳ đoạn code nào
của C/C++ thì Arduino IDE đều có thể nhận dạng, giúp các lập trình viên thuận tiện
trong việc thiết kế chương trình cho các bo mạch Arduino (Các ví dụ trong bài viết
sử dụng IDE này).
- Makeblock IDE và VEXcode IDE: Hỗ trợ ngôn ngữ lập trình Python và ngơn
ngữ lập trình trực quan Scratch.
- EasyCode IDE: Hỗ trợ ngơn ngữ lập trình trực quan Blocky. Ngơn ngữ lập
trình trực quan đóng vai trị trung gian giữa người lập trình và các ngơn ngữ như
C/C++.
7. Tổng hợp các lệnh hữu ích để code Arduino
7.1. Những lệnh Arduino IDE cơ bản: Ngay khi bạn mở Arduino IDE, bạn sẽ
được chào đón bởi các lệnh setup() và loop(). Đây là hai ví dụ duy nhất về sketch
mà bạn tìm thấy trong hầu hết tất cả các code Arduino.
Setup(): Mỗi khi sketch bắt đầu, lệnh setup sẽ giúp bạn khởi tạo các biến và bắt
đầu sử dụng các thư viện.
Loop(): Một vòng lặp theo sau setup và thực sự là trái tim của chương trình,
khiến nó phản hồi vô hạn với bất kỳ logic nào.
Break: Nếu bạn muốn thoát khỏi một lệnh, bạn cần nhấn break
If: Các lệnh logic khởi tạo một hành động mỗi khi một điều kiện được thỏa
mãn.
return: Trả về một giá trị nhất định.
while: Một vòng lặp khác diễn ra liên tục trong một điều kiện nhất định.

13



goto: Đúng như tên gọi của nó, lệnh này cho phép bạn đi đến một dòng nhất
định trong code
7.2. Boolean và các toán tử số học
Bên cạnh sketch và các lệnh kiểm soát, bạn phải biết một số Boolean và tốn
tử số học để chỉ huy các chương trình.
Các tốn hạng: Bằng (=), phép cộng (+), phép trừ (-), phép nhân (*) và phép
chia (/).
Các tốn hạng nâng cao: Khơng bằng (!=), Nhỏ hơn hoặc bằng (<=), lớn hơn
hoặc bằng (>=), phần dư (%).
Các biến quan trọng: Trong một số trường hợp, bạn cần đưa ra một vài biến để
xử lý những phép toán logic khác nhau. Những biến quan trọng là:
HIGH|LOW: Điều này mang lại giá trị cuối cùng cao và thấp cho các hằng số.
LED_BUILTIN: Đưa ra số lượng chân LED (LED pin)
7.3. Các hàm Arduino tích hợp sẵn
digitalRead(): Đọc giá trị từ một pin kỹ thuật số nhất định. Ngồi ra cịn
có digitalWrite().
pinMode(PIN_NUMBER, INPUT/OUTPUT): Thiết lập pin tại vị trí
PIN_NUMBER thành INPUT hoặc OUTPUT.
pinMode(PIN_NUMBER, INPUT_PULLUP): Thiết lập pin tại vị trí
PIN_NUMBER trở thành đầu vào bằng cách sử dụng điện trở kéo lên (pull-up
resistor) tích hợp của bo mạch Arduino.
analogRead(PIN_NUMBER): Đọc số chân analog PIN_NUMBER và trả về
một số nguyên từ 0 đến 1023.
analogWrite(PIN_NUMBER, VALUE): Giả lập analog output VALUE bằng
cách sử dụng PWM trên PIN_NUMBER (Lưu ý: Chỉ khả dụng trên các chân 3, 5,
6, 9, 10 và 11).
analogReference(DEFAULT): Sử dụng điện áp tham chiếu mặc định (5V hoặc
3.3V tùy thuộc vào điện áp bo mạch).
analogReference(INTERNAL): Sử dụng điện áp tham chiếu bên trong (1.1v

cho ATmega168/328p, 2.56 cho ATmega 32U4/8).
analogReference(EXTERNAL): Sử dụng điện áp được áp dụng cho chân
AREF làm điện áp tham chiếu (Lưu ý: chỉ 0-5V).
7.4. Các hàm toán học
min(i, j): Trả về giá trị thấp nhất trong hai giá trị i và j
max(i, j): Trả về giá trị cao nhất trong hai giá trị i và j

14


abs(i): Trả về giá trị tuyệt đối của i
sin(angle): Trả về sin của một góc tính bằng radian
cos(angle): Trả về cosin của một góc tính bằng radian
tan(angle): Trả về tang của một góc tính bằng radian
sqrt(i): Trả về căn bậc hai của i
pow(cơ số, số mũ): Tính lũy thừa bậc (số mũ) của (cơ số).
constrain(i, minval, maxval): Ràng buộc giá trị i giữa minval (giá trị nhỏ nhất)
và maxval (giá trị lớn nhất)
map (val, fromL, fromH, toL, toH): Chuyển đổi val từ phạm vi này sang phạm
vi khác
random(i): Trả về một số nguyên dài ngẫu nhiên nhỏ hơn i
random(i, j): Trả về một số nguyên dài ngẫu nhiên giữa i và j
randomSeed(k): Sử dụng giá trị k để seed hàm random()
7.5. Giao tiếp nối tiếp (serial communication)
Serial.begin(speed): Bắt đầu giao tiếp nối tiếp ở tốc độ xác định
Serial.end(): Kết nối giao tiếp nối tiếp
Serial.print(DATA): Xuất DATA vào cổng nối tiếp. DATA có thể là ký tự,
chuỗi, số nguyên và số thực dấu phẩy động (floating point number)
Serial.available(): Trả về số ký tự có sẵn để đọc trong bộ đệm nối tiếp
Serial.read(): Đọc ký tự đầu tiên trong bộ đệm nối tiếp (trả về -1 nếu khơng có

dữ liệu)
Serial.write(DATA): Ghi DATA vào bộ đệm nối tiếp. DATA có thể là một ký
tự, số nguyên hoặc array (mảng)
Serial.flush(): Xóa bộ đệm nối tiếp sau khi giao tiếp chiều đi hoàn tất
7.6. Servo
Servo myServo: Tạo biến myServo của loại Servo
myServo.attach(PIN_NUMBER): myServo được liên kết với pin tại vị trí
PIN_NUMBER
myServo.write(angle): Ghi một góc từ 0 đến 180 cho servo gắn với myServo
myServo.writeMicroseconds(uS): Ghi một giá trị tính bằng micro giây vào
servo được gắn với myServo (thường từ 1000 đến 2000 với 1500 là điểm giữa)
myServo.read(): Trả về một số nguyên chứa góc hiện tại của servo trong
khoảng từ 0 - 180

15


myServo.attached(): Trả về true nếu servo được gắn vào pin
myServo.detach(): Tách myServo bằng một pin đính kèm
IV. Một số bài tốn thực tiễn lập trình trên mạch Arduino
1. Đèn tín hiệu giao thơng
1.1. Mơ hình thực tế: Đèn tín hiệu giao thơng đóng vai trị quan trọng trong hệ
thống giao thông đô thị. Hệ thống này thường được lắp đặt tại các ngã 3, ngã 4 hay
các cung đường vị trí đường đặc biệt. Cột đèn thường sẽ có 3 màu đèn gồm: Đỏ,
Vàng, Xanh. Mỗi màu chứa đựng một hiệu lệnh riêng. Hệ thống đèn giao thông sẽ
thay lực lượng cảnh sát giao thông phân luồng chỉ dẫn. Người tham gia giao thông
chỉ cần quan sát và tuân thủ đúng theo hiệu lệnh chỉ dẫn này.
1.2. Mơ hình Tin học: Lập trình điều khiển LED tín hiệu giao thơng.
1.3. Sơ đồ thuật toán:
Bắt đầu


Cài đặt chức năng của các
chân
Đèn xanh

Chờ 30 giây

Đèn vàng

Chờ 3 giây

Đèn đỏ

Chờ 30 giây

1.4. Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện
Arduino Uno

Số lượng

Sơ đồ đấu nối

1
16


Led

3


Điện trở

3

Bo cắm

1

Dây cắm

7

Nguồn

1.5. Giải quyết vấn đề bằng lập trình:
Code
void setup()
{
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
}
void loop()
{
digitalWrite(11, HIGH);
delay(30000); //Chờ 30 giây
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(3000); //Chờ 3 giây

digitalWrite(12, LOW);
digitalWrite(13, HIGH);
delay(30000); //Chờ 30 giây
digitalWrite(13, LOW);
}
2. Nhấn nút cịi kêu
2.1. Mơ hình thực tế: Cịi điện thường được sử dụng trong hệ thống báo động,
chuông cửa, chng ở trường học, các cịi xe máy, ơ tơ,...
2.2. Mơ hình Tin học: Lập trình điều khiển cịi kêu bằng nút nhấn.
17


2.3. Sơ đồ thuật toán:
Bắt đầu

Cài đặt chức năng của các chân

Đ
Nút được nhấn

Còi kêu

S

Còi dừng kêu

2.4. Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện

Số lượng


Arduino Uno

1

Nhút nhấn

1

Còi Buzzer 5VDC

1

Bo cắm

1

Dây cắm

4

Nguồn

Sơ đồ đấu nối

2 pin 3,7V

2.5. Giải quyết bằng lập trình:
Code
int button = 11;

int coi = 13;
18


void setup() {
pinMode(coi,OUTPUT);
pinMode(button,OUTPUT);
}
void loop() {
int buttonStatus = digitalRead(button);
if (buttonStatus == HIGH) {
digitalWrite(coi, HIGH);
} else {
digitalWrite(coi, LOW);
}
}
3. Đèn sáng đuổi nhau
3.1. Mơ hình thực tế: Đèn nháy được sử dụng rất nhiều để trang trí vào dịp
giáng sinh, lễ tết,... Đèn nháy có rất nhiều hiệu ứng: đèn sáng đuổi nhau, nháy liên
hồi, đổi màu,…
3.2. Mơ hình tin học: Lập trình điều khiển đèn led sáng dần tắt dần.
3.3. Sơ đồ thuật toán:
Bắt đầu

Cài đặt chức năng của các chân

Sáng lần lượt 8 Led

Tắt lần lượt 8 Led


3.4. Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện

Số lượng

Arduino Uno

1

Led

8

Sơ đồ đấu nối

19


Điện trở
8
Bo cắm

1

Dây cắm

10

Nguồn


2 pin 3,7V

3.5. Giải quyết bằng lập trình:
Code
Dùng vịng lặp for
(Sử dụng trong trường hợp kết nối liền
mạch)
int BASE = 2; //led nối tới chân số 2
int NUM = 8; //số led
void setup()
{
for (int i = BASE; i < BASE + NUM;
i ++)
{
pinMode(i, OUTPUT);
}
}
void loop()
{
//tắt dần 8 led
for (int i = BASE; i < BASE + NUM;
i ++)
{
digitalWrite(i, LOW);
delay(200);

Dùng mảng 1 chiều
(Sử dụng trong trường hợp kết nối
không liền mạch)
const char led[8]={1,3,4,5,6,7,9,10};

void setup()
{
for (int i=0; i <=7; i++)
{
pinMode(led[i], OUTPUT);
}
}
void loop()
{
//tắt dần 8 led
for (int i=0; i <=7; i++)
{
digitalWrite(led[i], LOW);
delay(200);
}
//bật dần 8 led

20


}
for (int i=0; i <=7; i++)
//bật dần 8 led
{
for (int i = BASE; i < BASE + NUM;
digitalWrite(led[i], HIGH);
i ++)
delay(200);
{
}

digitalWrite(i, HIGH);
}
delay(200);
}
}
4. Bật/tắt đèn theo ánh sáng mơi trường
4.1. Mơ hình thực tế: Khi trời tối đèn tự động sáng, khi trời sáng đèn tự động
tắt. Mơ hình này thường được sử dụng điều khiển đèn ngủ trong các hộ gia đình, hệ
thống đèn đường, sân vườn,…
4.2. Mơ hình Tin học: Lập trình tự động bật/tắt đèn LED theo ánh sáng mơi
trường.
4.3. Sơ đồ thuật tốn:
Bắt đầu

Cài đặt chức năng các chân

Đọc giá trị cảm biến ánh sáng
Đ
Môi trường tối

Led sáng
S

Led tắt

4.4. Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện

Số lượng


Arduino Uno

1

Cảm biến ánh sáng

1

Sơ đồ đấu nối

21


Led

1

Điện trở

2

Bo cắm

1

Dây cắm

5

Nguồn


2 pin 3,7V

4.5. Giải quyết vấn đề bằng lập trình:
Code
int sensorPin = A0;
int ledPin = 9;
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop() {
int sensorValue= analogRead(sensorPin);
if(sensorValue < 300)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
delay(300);
22


}
5. Chữ số trên đồng hồ điện tử (Led 7 thanh)
5.1. Mơ hình thực tế: Led 7 thanh (7 đoạn) là thiết bị hiển thị điện tử để hiển
thị số. Led 7 thanh được sử dụng rộng rãi trong đồng hồ số, đồng hồ đo điện tử, hiển
thị số tại các cột đèn giao thơng, máy tính,...

5.2. Mơ hình tin học: Lập trình điều khiển led 7 thanh (7 đoạn) hiển thị các số
từ 0 đến 9.
5.3. Sơ đồ thuật toán:
Bắt đầu

Cài đặt chức năng của các chân

Hiển thị số 0
Hiển thị số 1
Hiển thị số 2
Hiển thị số 3
Hiển thị số 4
Hiển thị số 5
Hiển thị số 6
Hiển thị số 7
Hiển thị số 8
Hiển thị số 9

23


5.4. Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện

Số lượng

Arduino Uno

1


Led 7 thanh

1

Điện trở

7

Bo cắm

1

Dây cắm

9

Nguồn

Sơ đồ đấu nối

2 pin 3,7V

5.5. Giải quyết bằng lập trình:
Code
const int aPin = 2;
const int bPin = 3;
const int cPin = 4;
const int dPin = 5;
const int ePin = 6;
const int fPin = 7;

const int gPin = 8;
void setup()
{
pinMode(aPin, OUTPUT);
pinMode(bPin, OUTPUT);
pinMode(cPin, OUTPUT);
pinMode(dPin, OUTPUT);
pinMode(ePin, OUTPUT);
pinMode(fPin, OUTPUT);
pinMode(gPin, OUTPUT);
}
void loop()

// Hiển thị số 4
void display4()
{
allOn();
digitalWrite(aPin, LOW);
digitalWrite(dPin, LOW);
digitalWrite(ePin, LOW);
}
// Hiển thị số 5
void display5()
{
allOn();
digitalWrite(bPin, LOW);
digitalWrite(ePin, LOW);
}
// Hiển thị số 6
void display6()

{
24


{
display0(); delay(1000);
display1(); delay(1000);
display2(); delay(1000);
display3(); delay(1000);
display4(); delay(1000);
display5(); delay(1000);
display6(); delay(1000);
display7(); delay(1000);
display8(); delay(1000);
display9(); delay(1000);
}
//Hiển thị số 0
void display0()
{
allOn();
digitalWrite(gPin, LOW);
}
// Hiển thị số 1
void display1()
{
allOff();
digitalWrite(bPin, HIGH);
digitalWrite(cPin, HIGH);
}
// Hiển thị số 2

void display2()
{
allOn();
digitalWrite(fPin, LOW);
digitalWrite(cPin, LOW);
}
// Hiển thị số 3
void display3()
{
allOn();

allOn();
digitalWrite(bPin, LOW);
}
// Hiển thị số 7
void display7()
{
allOff();
digitalWrite(aPin, HIGH);
digitalWrite(bPin, HIGH);
digitalWrite(cPin, HIGH);
}
// Hiển thị số 8
void display8()
{
allOn();
}
// Hiển thị số 9
void display9()
{

display8();
digitalWrite(ePin, LOW);
}
void allOn()
{
digitalWrite(aPin, HIGH);
digitalWrite(bPin, HIGH);
digitalWrite(cPin, HIGH);
digitalWrite(dPin, HIGH);
digitalWrite(ePin, HIGH);
digitalWrite(fPin, HIGH);
digitalWrite(gPin, HIGH);
}
void allOff()
{
digitalWrite(aPin, LOW);
digitalWrite(bPin, LOW);
25


×