Giữ giá trị trong phạm vi
Thuộc phần Đầu vào trong hành trình Arduino của Coddy. Bài học 11 trên 22.
Đôi khi chỉ một phần của phạm vi mới cần được tính. Ví dụ, chỉ đoạn giữa trong hành trình xoay của núm vặn mới quan trọng, tương ứng với số đọc từ 200 đến 800, và đoạn đó cần ứng với từ 0 đến 100 phần trăm:
int percent = map(reading, 200, 800, 0, 100);Giá trị này cho kết quả 0 ở mức 200 và 100 ở mức 800, nhưng map() không giới hạn kết quả ở hai đầu phạm vi. Số đọc 0 cho kết quả -33, còn 1023 cho kết quả 137. Phần trăm thấp hơn 0 hoặc cao hơn 100 là vô nghĩa.
constrain(x, low, high) giữ một số nằm trong phạm vi: mọi giá trị thấp hơn low sẽ trở thành low, mọi giá trị cao hơn high sẽ trở thành high, còn các giá trị ở giữa được giữ nguyên.
percent = constrain(percent, 0, 100);Thử thách
DễNúm xoay nối với A0. In ra phần trăm, trong đó giá trị đọc từ 200 đến 800 tương ứng với 0 đến 100:
- ánh xạ giá trị đọc từ 200 đến 800 thành khoảng từ 0 đến 100
- giữ giá trị trong khoảng từ 0 đến 100 bằng
constrain() - in giá trị ra, rồi chờ 100 ms
Nhấn Chạy, xoay núm hết cỡ theo cả hai chiều, rồi nhấn Kiểm tra.
Tự làm thử
void setup() {
Serial.begin(9600);
}
void loop() {
int reading = analogRead(A0);
// Ánh xạ từ 200..800 sang 0..100, giữ giá trị trong khoảng 0..100, in ra rồi chờ 100 ms
}
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Đầu vào
2Đầu vào analog
Đọc giá trị núm xoayChuyển giá trị núm xoay thành vônÁnh xạ thành phần trămGiữ giá trị trong phạm viNgưỡng núm xoayĐèn ngủ tự độngChân công tắc cảm biến ánh sáng3Nhập liệu qua cổng nối tiếp
Đọc một ký tự qua cổng nối tiếpLệnh bằng từĐiều chỉnh tốc độ nhấp nháy qua cổng nối tiếpNhấp nháy theo lệnhTự luyện tập: Playground Arduino