Báo cáo thực hành Chương 1 - Công nghệ thông tin | Đại học Công nghệ Giao thông vận tải
Báo cáo thực hành Chương - Công nghệ thông tin | Đại học Công nghệ Giao thông vận tải được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!
Môn: Công nghệ thông tin (cntt09)
Trường: Đại học Công nghệ Giao thông vận tải
Thông tin:
Tác giả:
Preview text:
Báo cáo thực hành
Chương 1: Lập trình nhúng
Học phần: Phát triển ứng dụng trên thiết bị di động (KC359)
Nhóm học phần: KC359, Thứ 5, Phòng 301/CN
Nhóm 12, danh sách nhóm: STT Họ và Tên MSSV Mức độ tham gia 1 Nguyễn Phát Thế B2016865 100% 2 Trần Quốc An B2113246 100% 3 Bùi Hoàng Minh Đan B2016889 100% 4 Ngô Thị Kim Ngân B2007142 100% 5 Đào Chí Cường B2016820 100% 6 Đặng Văn Hòa B2016834 100%
Nội dung thực hành:
Câu 1: Giải thích ngắn gọn hoạt động của hàm loop.
-Giải thích: Đầu tiên gửi tín hiệu mức cao ra pin 2 của vi điều khiển esp32 ,delay
nửa giây, sau đó tiếp tục gửi tín hiệu mức thấp ra pin 2 rồi delay nửa giây.
Câu 2: Kết nối 4 LED đơn vào 4 GPIO của ESP32 (Sinh viên tự chọn GPIO kết nối
LED), vẽ sơ đồ mạch vào báo cáo (sử dụng phần mềm).
Câu 3: Viết chương trình chớp tắt các LED vừa kết nối với ESP32. (chỉ trình bày nội dung hàm loop vào báo cáo) hàm loop: Cho tất cả các pin
được khai báo ra mức cao sau đó delay nửa giây, tiếp tục cho tất cả các pin trên ra
mức thấp, delay nửa giây.
Câu 4: Người học tự đề xuất 2 hiệu ứng trên các LED vừa kết nối, viết chương trình và
kiểm chứng kết quả. (trình bày nội dung hàm loop vào báo cáo)
*Hiệu ứng 1:Các led chớp tắt lần lượt nhau: Hàm loop:
*Hiệu ứng 2: Các led 1 và 4 sáng rồi tắt xen kẽ với các led 2 và 3: Hàm loop:
Câu 5: Viết chương trình in trạng thái của phím boot trên kit ESP32 (GPIO0) lên cửa sổ
Serial monitor. Nếu phím bị ấn hãy in ra “Phim boot vua bi an”. (trình bày nội dung hàm loop vào báo cáo) Hàm loop: kết quả:
-Dùng hàm digialRead() để đọc giá trị logic nhận từ nút nhấn( pin 0 ) , nếu mức
logic nhận được là 0 thì dùng hàm Serial.println() để in ra cửa sổ Serial Monitor câu “Phim boot vua bi an”.
Câu 6: Sửa chương trình ở Câu 7 để thêm chức năng đếm số lần ấn phím (mỗi lần ấn chỉ
in ra Serial monitor một lần duy nhất). Gợi ý kết quả hiện ra của sổ Serial monitor. Hàm loop: Kết quả:
Giải thích : Biến status1 dùng để
đọc giá trị trả về của hàm chong_doi()
(hàm này trả về true khi nhấn nút).Khi
status1 bằng true thì đảo trạng thái của
t(lưu trạng thái nút nhấn) đồng thời xét
trạng thái đang ấn của nút.Khi t bằng 1
thì tăng biến đếm và đảo trạng thái của t và in ra số lần đếm.
Câu 7: Người học hãy lắp thêm hai phím
ấn vào mạch, các GPIO sử dụng giao tiếp
phím do người học tự chọn, vẽ sơ đồ nguyên lý vào báo cáo (vẽ bằng phần mềm). Câu 8: Viết chương trình hiển
thị trạng thái của hai phím ra hai LED đơn (Sử dụng 2 trong 4 LED ở Câu 3 phần 1.1).
Người học hãy ghi nhận nội dung vòng loop vào báo cáo. Hàm loop:
Giải thích :Dùng button1 để điều khiển led1 , dùng button2 để điều khiển led2.
Câu 9: Viết chương trình tăng/giảm giá trị của một biến đếm (ví dụ biến count) sử dụng
hai phím vừa lắp thêm, mỗi khi thay đổi giá trị hãy in ra cửa sổ Serial monitor. Các GPIO
sử dụng giao tiếp phím do người học tự chọn. Người học hãy ghi nhận nội dung vòng loop vào báo cáo. Hàm loop: Giải
thich:Khi nhấn button1 thì biến đếm
count tăng lên 1 giá trị, khi nhấn button2 thì biến đếm count giảm 1 giá trị.Khi giảm về 0
Câu 10: Hai biến __cntP và __cntR có vai trò gì? Người học hãy tăng, giảm giá trị của
hai biến này (mặc định bằng 5), đánh giá hiệu quả chống dội, xác định giá trị phù hợp
nhất cho hai biến này cho phần cứng hiện tại.
__cntP: Đếm số lần liên tiếp trạng thái của nút nhấn là "nhấn giữ". Nếu số lần đọc
giá trị là "nhấn giữ" đạt đến một ngưỡng cụ thể (trong trường hợp này là 20), mã giả định
rằng nút đã thực sự được nhấn mà không phải do nhiễu. Sau đó, cờ flag được đặt thành 1
để chỉ ra rằng nút đã được nhấn.
__cntR: Tương tự như __cntP, nhưng nó theo dõi số lần liên tiếp mà trạng thái nút
nhấn là "không nhấn" (hoặc "thả"). Nếu số lần đọc giá trị là "không nhấn" đạt đến
ngưỡng 20, mã giả định rằng nút không còn bị nhấn nữa.
-Khi tăng giá trị của 2 biến sẽ làm tăng độ trễ của nút ấn, sẽ hạn chế tín hiệu dội
tốt hơn tuy nhiên khả năng phản hồi giảm.
-Khi giảm giá trị 2 biến sẽ làm nút ấn phản hồi nhanh hơn ,tuy nhiên làm tăng khả năng dội phím.
→ Ở ví dụ trên , giá trị mặc định là 5, nên tăng giá trị của 2 biến sẽ giúp đạt hiệu
quả chống dội tốt hơn.Giá trị phù hợp là 40.
Câu 11: Người học hãy hiệu chỉnh chương trình Lab1_03.ino để chống dội cho 3 phím ấn
(Phím trên mạch và hai phím lắp thêm Câu 8 phần 1.2). Người học tự đề xuất chức năng
của các phím ấn, ví dụ: phím 1 được sử dụng để tăng giá trị biến count một đơn vị, phím
2 giảm giá trị của biến count 1 đơn vị, phím 3 đặt giá trị biến count về 0. Người học hãy
trình bày nội dung của hàm key_read và loop vào báo cáo. Hàm loop: Hàm key_read: Kết quả:
Câu 12: Viết thêm lệnh sử dụng hàm readRaw để đo điện áp Vout, in đồng thời hai giá trị
để so sánh. Hiệu chỉnh điện áp từ 0 V đến 3.3 V, nhận xét:
Nhận xét: Giá trị điện áp Vout tỉ lệ thuận với giá trị ADC, khi hiệu chỉnh giá trị
Vout càng nhỏ thì giá trị ADC giảm theo và ngược lại
Câu 13: Hãy hiệu chỉnh biến trở để VOUT khoảng 0.5 V (đo bằng VOM - VoltOhm-
Milliammeter), ghi nhận điện áp Vout và VADC (đọc trên cửa sổ ESP32, sử dụng chương
trình Lab1_04.ino) 10 lần, mỗi lần cách nhau 30 giây, hoàn thành bảng sau: Khi Vout = 0.5v: Bảng giá trị: STT VVOM V |e| ADC 1. 0.48 0.5 0.02 2. 0.48 0.5 0.02 3. 0.49 0.51 0.02 4. 0.45 0.48 0.03 5. 0.47 0.49 0.02 6. 0.46 0.49 0.03 7. 0.48 0.5 0.02 8. 0.47 0.49 0.02 9. 0.48 0.5 0.02 10. 0.47 0.49 0.02 MAE 0.22 Khi Vout = 1.5v : Bảng giá trị: STT VVOM V |e| ADC 1. 1.44 1.47 0.03 2. 1.46 1.49 0.03 3. 1.46 1.50 0.04 4. 1.45 1.49 0.04 5. 1.48 1.51 0.03 6. 1.46 1.50 0.04 7. 1.46 1.50 0.04 8. 1.46 1.50 0.04 9. 1.44 1.48 0.04 10. 1.45 1.49 0.04 MAE 0.037 Khi Vout = 3v : Bảng giá trị: STT VVOM V |e| ADC 1. 2.94 2.99 0.05 2. 2.95 3 0.05 3. 2.94 2.99 0.05 4. 2.93 2.97 0.04 5. 2.94 2.99 0.05 6. 2.95 3 0.05 7. 2.95 3 0.05 8. 2.96 3.01 0.05 9. 2.96 3.02 0.06 10. 2.96 3.01 0.05 MAE 0.05
Nhận xét: Điện áp chênh lệch không đáng kể.
Câu 14: Khảo sát giá trị VOUT (sử dụng chương trình Lab1_04.ino) để hoàn thành bảng sau: Trường Hợp Vout(v) SW1 ấn 0.14 SW2 ấn 1.67 SW3 ấn 2.22 SW4 ấn 2.49 Không có ấn phím 2.65
Câu 15: Hãy vẽ lưu đồ thuật toán xác định phím được ấn, viết chương trình, kiểm tra kết quả trên Serial monitor. Lưu đồ thuật toán: Chương trình: Kết quả: Hàm key_read: Hàm loop:
Câu 17: Ghi nhận giá trị VOUT trong hai trường hợp sau: áng tự nhiên chiếu vào: - Khi
quang trở bị che ánh sáng:
Câu 18: Viết chương trình bật LED tại GPIO2 khi quang trở bị che ánh sáng, tắt khi có
ánh sáng chiếu vào, ghi nhận hàm loop vào báo cáo. Hàm loop: Câu 19: Viết
chương trình thu thập dữ
liệu VOUT và vẽ đồ thị (sử dụng Serial Plotter), tốc độ lấy mẫu 10 Hz. Thay đổi cường
độ chiếu sáng vào quang trở, ghi nhận đồ thị và hàm loop vào báo cáo.
Khi quang trở không bị che sáng:
Khi quang trở bị che sáng: Hàm loop:
Câu 20: Hiệu chỉnh chương trình để tăng độ phân giải độ rộng xung lên 10 bit, nhận xét
kết quả và ghi nhận chương trình vào báo cáo.
Chương trình sau khi hiệu chỉnh: Nhận
xét: LED sáng yếu hơn so với độ phân giải độ rộng xung 8 bit.
Câu 21: Viết chương trình đọc điện áp Vr, Vg, Vb, chuẩn hóa khoảng giá trị của chúng về
số nguyên 8 bit như trong chương trình Lab1_05.ino, trình bày nội dung hàm loop vào báo cáo. Hàm loop: Kết quả:
Câu 22: Thêm các lệnh khởi động 3 kênh PWM tại GPIO12, 14 và 27 hàm setup,
trình bày nội dung hàm setup vào báo cáo. Hàm setup:
Câu 23: Thêm các lệnh để sử dụng các điện áp sau chuẩn hoá của Vr, Vg và Vb để điều
khiển độ rộng xung tương ứng tại các GPIO12, 14 và 27. Ghi nhận hàm loop vào báo cáo. Hàm loop:
Câu 24: Viết chương trình cho LED RGB thay đổi một số màu liên tục với nhiều cường
độ sáng khác nhau. Ghi nhận chương trình vào báo cáo. Chương trình: