티스토리 뷰
728x90
반응형
SMALL
const int ledPin = 13;
const int sensorPin = 0;
const int minDuration = 100; // 깜빡임시간 min, 1ms on, 1ms off (500Hz)
const int maxDuration = 1000; // 깜빡임시간 max, 10ms on, 10ms off (50Hz)
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
int rate = analogRead(sensorPin);
rate = map(rate, 200, 800, minDuration, maxDuration); // map함수로 간격 확장
rate = constrain(rate, minDuration,maxDuration); // constrain으로 값 제한
digitalWrite(ledPin, HIGH);
delay(rate);
digitalWrite(ledPin, LOW);
delay(rate);
}
map함수
현재 범위(fromLow ~ fromHigh)를 다른 범위(toLow ~ toHigh)로 변환한다.
제한이 필요한 경우에는 constrain()함수를 이 함수의 전 또는 후에 쓸 수 있다.
y = map(x, 1, 50, 50, 1)처럼 하한과 상한을 변환할 때도 사용될 수 있다.
map(value, fromLow, fromHigh, toLow, toHigh)
value : 변환할 수
fromLow : 현재 범위 값의 하한
fromHigh : 현재 범위 값의 상한
toLow : 목표 범위 값의 하한
toHigh : 목표 범위 값의 상한
map(rate, 200, 800, minDuration, maxDuration) 에서 rate의 범위를 map함수로 변환시킨다.
현재 범위가 200에서 800이라면 minDuration(100)에서 maxDuration(1000)으로 확장시킨다.
constrain함수
값이 지정된 범위를 벗어나지 않도록 제한하는 방법
constrain(x, a, b)
x : 제한할 수
a : 모든 자료형 a, 범위의 하한
b : 모든 자료형 b, 범위의 상한
x를 a~b 사이의 값 범위를 갖도록 제한하는 방법
728x90
반응형
LIST
'임베디드 > 아두이노' 카테고리의 다른 글
아두이노 조도센서 (CDS, LDR, 포토셀, 포토레지스터) 연결하기 (0) | 2024.04.30 |
---|---|
[library] 시간관련 헤더파일 - Time.h, Timealarms.h, RTC.h (0) | 2019.08.28 |