Thực hành
Lập trình hệ thống
Sinh viên: Trần Văn Dương
Lớp: 16TCLC2
MSSV: 102160211
Danh sách linh kiện
STT
Linh kiện
Thông sô
Sô lượng
Giá
1
Điện trở
220 Ohm
10
3,000
2
Điện trở
8k Ohm
10
3,000
3
Biến trở volum
10k Ohm
1
3,000
4
Quang trở
5mm
5
5,000
5
Led
5mm
10
4,000
6
Led 7 thanh
Anode chung
2
5,000
7
IC
74HC595
1
4,000
8
LCD Character
16x2
1
32,000
9
Bread board
80 cột
1
30,000
10
Dây nối
2 đầu dương
20
10,000
11
Mạch CPU Arduino
UNO R3
1
150,000
Bài tập mở rộng 1.1
Yêu cầu: Lắp đèn led vào các chân khác của mạch UNO và sửa code để khiển khiển
đèn led đó (chân 0 đến chân 13, chân A0 đến A5 của đầu ra). Mỗi đèn led nối với một
điện trở 220 Ohm.
Ý tưởng: Chỉ đổi chân 2 bằng các chân khác (0 đến 13, A0 đến A5 của đầu ra)
Bài tập mở rộng 1.2a
Yêu cầu: Lắp 8 led vào các chân ngỏ ra rồi viết code để tạo hiệu ứng điều khiển các led đó,
dùng nhiều loại vòng lặp khác nhau, 3 led chạy nối đuôi xoay vòng
Ý tưởng: 0: đèn sáng, 1: đèn sáng (8 chữ số đại diện cho 8 đèn)
Hoạt động: 10000000 11000000 11100000 01110000 … 00000111 10000011 1100000001 ...
Bài tập mở rộng 1.2a
Một số code sử dụng các loại vòng lặp khác:
Bài tập mở rộng 1.2b
Yêu cầu: Lắp 8 led vào các chân ngỏ ra rồi viết code để tạo hiệu ứng điều
khiển các led đó, dùng nhiều loại vòng lặp khác nhau, sô led sáng tăng dần
từ 1 đến 8 led và giảm dần từ 8 về 1.
Ý tưởng: - Vòng lặp thứ 1: bật các đèn lần lượt từ đèn thứ 1 đến 9
- Vòng lặp thứ 2: tắt các đèn lần lượt từ đèn thứ 9 về 9
- Lặp lại quá trình trên
Bài tập mở rộng 1.2b
Một số code sử dụng các loại vòng lặp khác:
Bài tập mở rộng 2.1
Yêu cầu: Tạo hiệu ứng sao băng trên các led nối với chân PWM 3, 5 ,6 ,9 ,10 ,11.
Hiệu ứng sao băng là một điểm sáng nhất di động và có đuôi mờ dần về phía sau.
Ý tưởng: Tương tự như 1.2a nhưng mức sáng sẽ giảm dần từ đầu đến đuôi
Bài tập mở rộng 2.2
Yêu cầu: Điều chỉnh độ sáng của đèn led khi vặn biến trở volume
Ý tưởng: Đọc giá trị từ biến trở, sau đó thiết lập mức sáng tương ứng cho LED
Bài tập mở rộng 2.3
Yêu cầu: Điều khiển tốc độ chuỗi sao băng bằng biến trở volume.
Ý tưởng: Đọc giá trị từ biến trở, sau đó thiết lập thời gian delay cho mỗi lần dịch chuyển,
ta đã có thể điều chỉnh tốc độ sao băng.
Bài tập mở rộng 3.1
Yêu cầu: Tạo dòng chữ “hello world” chạy từ trái sang phải trên dòng 1.
Ý tưởng: Dịch chuyển từng kí tự 1 sang phải
Bài tập mở rộng 3.2a
Yêu cầu: Viết mã để nhận tín hiệu từ 4 nút bấm, sao cho mỗi khi nhấn 1 nút mạch sẽ
Hiển thị “func” và số thứ tự của nút bấm đó
Ý tưởng: Vì không có nút bấm nên sẽ nhận input nút bấm từ Serial Monitor. Kiểm tra có
phải trong khoảng 1 đến 4 hay không? Phải, thì in ra func và số đó: Không, thì không in
Bài tập mở rộng 3.2b
Yêu cầu: Viết mã để nhận tín hiệu từ 4 nút bấm, sao cho mỗi khi nhấn 1 nút mạch sẽ
Các đèn led sẽ sáng theo 1 hiệu ứng trong 4 hiệu ứng mặc định cho từng nút.
Ý tưởng: Tương tự 3.1a và ta sẽ tạo thêm 4 hàm tương ứng 4 hiệu ứng. Kiểm tra đầu vào
là phím 1 thì gọi hàm hiệu ứng 1, phím 2 thì gọi hàm hiệu ứng 2,…
Bài tập mở rộng 3.2b
Bài tập mở rộng 4.1
Yêu cầu: Viết chương trình để mở rộng thành 4 quang trở và 4 led
Ý tưởng: Dựa vào sự thay đổi điện trở trong quang trở khi có ánh sáng hoặc tối,
khi chạm tay và thả ra tức tôi - sáng, sẽ thay đổi trạng thái của đèn.
Bài tập mở rộng 4.2
Yều cầu: Bố trí 4 quang trở cùng nằm trên đường thẳng nằm ngang và dùng 4
led để chỉ thị lệnh. Viết chương trình:
• Quét ngón tay qua 4 quang trở từ trái sang phải: bật tất cả
• Quét ngón tay qua 4 quang trở từ phải sang trái: tắt tất cả
• Một chạm vào mỗi quang trở sẽ bật led tương ứng
• Hai chạm liên tiếp vào mỗi quang trở sẽ tắt led tương ứng
Bài tập mở rộng 4.2
Bài tập mở rộng 4.2
Bài tập mở rộng 4.2
Bài tập 5
Yêu cầu: Lắp mạch và viết chương trình điều khiển 2 led 7 thanh (Anode chung)
hiển thị đếm từ 0 đến 20 với các yêu cầu:
- Sử dụng IC 74HC595 để truyền dữ liệu nối tiếp từ mạch UNO vào các thanh
diode của led 7 thanh.
- Thời gian thay đổi biến hiển thị là 500ms
Bài tập 5