Menu
CoddyTech

값을 범위 내로 유지하기

Coddy Arduino 여정의 입력 섹션에 포함된 레슨. 22개 중 11번째.

때로는 범위의 일부만 계산에 포함해야 합니다. 예를 들어, 노브가 움직이는 범위 중간 부분인 200부터 800까지만 중요하고, 이를 0부터 100퍼센트로 나타내야 한다고 해 봅시다.

int percent = map(reading, 200, 800, 0, 100);

이렇게 하면 200에서 0, 800에서 100이 되지만, map()은 범위의 양 끝에서 멈추지 않습니다. 0을 읽으면 -33이 되고, 1023을 읽으면 137이 됩니다. 0보다 작거나 100보다 큰 퍼센트는 의미가 없습니다.

constrain(x, low, high)는 숫자를 범위 안에 유지합니다. low보다 작은 값은 low가 되고, high보다 큰 값은 high가 되며, 그 사이의 값은 그대로 유지됩니다.

percent = constrain(percent, 0, 100);
challenge icon

챌린지

쉬움

노브는 A0에 연결되어 있습니다. 측정값 200부터 800까지를 0부터 100까지의 백분율로 출력하세요:

  • 측정값을 200부터 800까지의 범위에서 0부터 100까지로 매핑하세요
  • constrain()을 사용해 0부터 100 사이로 유지하세요
  • 출력한 다음 100 ms 동안 기다리세요

Run을 누르고, 노브를 양쪽 끝까지 돌린 다음 Check를 누르세요.

직접 해보기

void setup() {
  Serial.begin(9600);
}

void loop() {
  int reading = analogRead(A0);
  // 200..800을 0..100으로 매핑하고, 값을 0..100 범위로 유지한 뒤 출력하고 100 ms 기다린다
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

입력의 모든 레슨

직접 연습해 보세요: Arduino 플레이그라운드