Kiến thức cốt lõi
Mã mẫu SGK Bài26 có lời chú thích “hiệu chuẩn trong 5 s đầu” nhưng lại gọi `calib()` **bên trong `loop()`**, vì vậy nếu chép nguyên, đoạn hiệu chuẩn chạy lại sau mỗi vòng. Quy trình đúng mục tiêu bài: trong giai đoạn **khởi tạo một lần** sau bật/reset (hoặc khi chủ động yêu cầu), đo A0 ở ít nhất hai điều kiện sáng/tối phù hợp, lưu `min` và `max`; sau đó vòng lặp mới đọc giá trị hiện tại và điều khiển LED. Phải kiểm `max>min` trước phép ánh xạ để tránh chia cho 0; nếu không đủ chênh lệch, báo chưa hiệu chuẩn và thử lại dưới giáo viên, không tạo số PWM giả. Khi đổi môi trường hoặc cảm biến có thể hiệu chuẩn lại theo quy trình. Số đo ADC min/max phản ánh **bộ mạch và điều kiện đo**, không là hằng số 0/1023 cho mọi quang trở. Không dùng đèn quá nóng hoặc lửa thật để chiếu thử.
Ví dụ
Lần khởi tạo thu được min=180 trong tối và max=820 dưới đèn phòng. Dải 640>0 nên có thể ánh xạ. Nếu cả hai đều 500, không dùng phép chia cho `max−min=0`; kiểm dây/điều kiện rồi hiệu chuẩn lại.
Bài luyện
Vì sao không gọi calib() ở mỗi vòng loop như mã in SGK nếu mục tiêu chỉ 5 s đầu?
Sai vì không phù hợp với điều kiện đã nêu.
Đúng. loop lặp lại; hiệu chuẩn một lần thuộc khởi tạo/quy trình riêng.
Sai vì không phù hợp với điều kiện đã nêu.
Sai vì không phù hợp với điều kiện đã nêu.
Lời giải
loop lặp lại; hiệu chuẩn một lần thuộc khởi tạo/quy trình riêng.
Bài luyện
min=max=500 thì có nên map với mẫu số max−min?
Đúng. Phép ánh xạ tuyến tính cần dải khác 0.
Sai vì không phù hợp với điều kiện đã nêu.
Sai vì không phù hợp với điều kiện đã nêu.
Sai vì không phù hợp với điều kiện đã nêu.
Lời giải
Phép ánh xạ tuyến tính cần dải khác 0.
Bài luyện
Dải hiệu chuẩn nên lấy ở đâu?
Sai vì không phù hợp với điều kiện đã nêu.
Sai vì không phù hợp với điều kiện đã nêu.
Sai vì không phù hợp với điều kiện đã nêu.
Đúng. Đặc tính quang trở và môi trường có thể khác.
Lời giải
Đặc tính quang trở và môi trường có thể khác.
Đang học