값을 범위 내로 유지하기
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);챌린지
쉬움노브는 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 기다린다
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
입력의 모든 레슨
직접 연습해 보세요: Arduino 플레이그라운드