티스토리 뷰

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함