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
   64   65   66   67   68   69   70   71   72   73   74