Menu
CoddyTech

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);
challenge icon

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
}
quiz iconTự kiểm tra

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

Tự luyện tập: Playground Arduino