# 5.3 아날로그 출력 코딩

아날로그 출력 코딩에서 사용할 예제는 기본적으로 [5.2장 디지털 출력 코딩](digital_input)에서 사용한 전자회로 구성방식을 그대로 사용합니다. 다만, 전자회로에서 서로 차이가 있는 것은 출력에 사용하는 핀이 다른데 **아날로그 출력이기 때문에 아두이노 우노의 아날로그 전용 출력핀(PWM 핀: \~3, \~5, \~6, \~9, \~10, \~11)을 사용해야 하고, 코딩할 때도 이를 염두해 코딩**하시면 됩니다. 디지털 출력에서는 디지털 방식의 제어인 LED의 단순 순간적인 점멸이었다면, 아날로그 출력에서는 이제 이를 아날로그적으로 제어해 크리스마스 트리에서 볼 수 있는 LED처럼 서서히 밝아졌다가 다시 서서히 희미해졌다를 반복하는 것을 구현해 보는 것입니다.&#x20;

![](https://1238842542-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MaoCrU7aM6SgouXppME%2F-MbZNGl80OGNfR1m5mOs%2F-MbZPI-qgYhe8ZboNB7w%2Fimage.png?alt=media\&token=02c35a7d-290c-49e7-9bb5-d0dab35e73c3)

자 그럼 이제 코딩 부분을 살펴봅시다. PWM에 대한 이해는 [3.3장](../../coding_start/digital_analog#analog-output)에서 알려드린 [유투브 동영상](https://www.youtube.com/watch?v=yhpk4V9w-ZM)을 통해 충분히 이해했다는 전제하에 PWM의 추가적인 설명없이 진행하겠습니다. **아두이노 블록코딩에서는** [**3.3장**](../../coding_start/digital_analog#analog-output)**의 그림에서 언급한 것처 PWM 핀 전용 블록이 따로 있고, 0v\~5v까지의 출력전압값을 아날로그적으로 표현하기 위해 0\~255까지 값으로 설정**할 수 있습니다. 우리 코드에서는 천천히 LED를 밝히고 다시 어둡게 하기 위해 변수를 이용하고 있으며, 변수값을 10ms 시간 간격으로 255단계까지 높혔다가 줄였다를 반복하고 있습니다. C++코드로도 한번 더 살펴보면 이전과 다른 점은 아날로그 출력이기 때문에 출력을 위해 analogWrite 함수를 사용한다는 점입니다.

![](https://1238842542-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MaoCrU7aM6SgouXppME%2F-MbZWjcWLKzWpXfHi4rE%2F-MbZYPRCWrrAcpYIF6P8%2Fimage.png?alt=media\&token=b26693cb-7a8b-432c-a943-217111cbbaa0)
