Page 69 - 최강 아두이노 퍼스트 참고서
P. 69
// 읽어들인 값을 pwm 범위 값으로 변환.
// analogRead 는 0~1023 이므로 pwm 포트에 출력 가능한 //
0~255 사이의 값으로 변경을 하는 함수입니다.
int ledValue= map(sensorValue, 0, 1023, 0, 255);
analogWrite(ledPin, ledValue);
delay(100); // 0.1 초 DELAY
}
PWM 직접 구현 예제 코드
정밀하지는 않지만 delayMicroseconds (), digitalWrite(포트, HIGH or LOW )를 사용 하여
PWM 과 비슷한 프로그래밍을 하여 LED 의 밝기를 조절 할 수도 있습니다.
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delayMicroseconds(100); // 대략 10% duty cycle @ 1KHz 지연
digitalWrite(13, LOW);
delayMicroseconds(1000 - 100);
}
함수 delayMicroseconds(지연시간); 함수의 파라미터 지연시간은 delay() 함수와 다릅니다.
시간 표시 단위는 1 초를 기준으로 다음과 같이 표시 가능합니다.
1 초는 1000 밀리초(밀리세컨드)입니다. 1 sec = 1,000 ms; 1 밀리초는 1000 마이크로초(마이
크로세컨드) 1 ms = 1,000 us; 다시 1 초는 1,000,000 us 입니다.
그럼 위에 코드의 delayMicroseconds(100);
100 us (100 마이크로초) 지연 하라는 의미가 됩니다. 함수의 100 아규먼트는 100us 의미입니
다. 그럼, 1 초를 마이크로초(us)로 변환하면
1,000,000 us 입니다. 100 / 1,000,000 = 0.0001 sec 입니다.
100 us 는 0.0001 초입니다 0.0001 초 동안 지연시키게 됩니다.
69