analogWrite() 함수는 Arduino와 같은 마이크로컨트롤러 플랫폼에서 사용되는 중요한 함수다.
기능: PWM(Pulse Width Modulation) 신호를 생성하여 아날로그 출력을 시뮬레이션한다.
사용법: analogWrite(pin, value)
pin: PWM 출력이 가능한 핀 번호
value: 0에서 255 사이의 값 (8비트 해상도)
주요 용도:
LED 밝기 조절
모터 속도 제어
아날로그 신호가 필요한 다른 장치 제어
동작 원리: 빠른 속도로 디지털 신호를 켜고 끄는 것으로 아날로그 신호를 모방한다.
주의사항: 모든 핀이 PWM을 지원하는 것은 아니므로, 사용 전 보드의 사양을 확인해야 합니다.
기능:
digitalWrite(): 디지털 신호 출력 (HIGH 또는 LOW)
analogWrite(): PWM을 통한 아날로그 신호 시뮬레이션 (0-255 값)
사용 빈도 및 중요성:
digitalWrite()가 일반적으로 더 자주 사용된다.
이는 많은 기본적인 제어 작업(예: LED 켜기/끄기, 릴레이 제어)에 충분하기 때문이다.
analogWrite()는 더 정교한 제어가 필요할 때 중요하다. 예를 들어, LED 밝기 조절이나 모터 속도 제어에 필수적이다.
실무에서는 상황에 따라 두 함수의 중요성이 달라진다.
단순 on/off 제어에는 digitalWrite()가 충분하지만, 세밀한 제어가 필요한 프로젝트에서는 analogWrite()가 자주 사용된다.

const unsigned int led[6] = {3,5,6,9,10,11};
void setup() {
// put your setup code here, to run once:
}
void loop() {
// 6번 반복한다.
for(int n=0; n<=5; n++) {
// 밝기 조절
for(int t_high=0; t_high<=255; t_high++) {
analogWrite(led[n], t_high);
delay(2);
}
analogWrite(led[n], 0);
}
}

void loop() {
for(int n=0; n<=5; n++) {
for(int t_high=0; t_high<=255;t_high++) {
analogWrite(led[n], t_high);
delay(2);
}
}
for(int n=5; n>=0; n--) {
for(int t_high=255; t_high>=0; t_high--) {
analogWrite(led[n], t_high);
delay(2);
}
}
delay(500);
}

const int ledPin = 9; // LED를 연결할 PWM 핀 번호
const int delayTime = 10; // 각 밝기 단계 사이의 지연 시간 (밀리초)
void setup() {
pinMode(ledPin, OUTPUT); // LED 핀을 출력으로 설정
}
void loop() {
// 밝기를 0에서 최대(255)로 증가
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPin, brightness);
delay(delayTime);
}
// 밝기를 최대(255)에서 0으로 감소
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPin, brightness);
delay(delayTime);
}
}