3주차 ESP32 핀맵, 외부 LED 점멸 실습, PWM - hyunwoo14/SmartDevice GitHub Wiki
- ESP32 핀맵
- 외부 LED 점멸 실습
- 디지털 출력을 이용한외부 LED 켜고 끄기
- 아날로그 출력을 이용한 외부 LED 켜고 끄기
- 디지털 입력을 이용한 외부 LED 켜고 끄기
- 아날로그 입력을 이용한 외부 LED 켜고 끄기
- PWM이란?
- PWM의 정의
- PWM의 활용 예시
- 후기
위 핀맵을 이용하여 브래드 보드를 사용한다.
const int ledPin = 4;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
LED를 4번 핀에 연결했으므로 핀 번호를 4번으로 설정하고, ledPin을 출력으로 설정한 후 1초 켜고 1초 끄는 것을 반복한다.
1.mp4
const int ledPin = 4;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
for (int i = 0; i <= 255; i++) {
analogWrite(ledPin, i);
delay(15);
}
for (int i = 255; i >= 0; i--) {
analogWrite(ledPin, i);
delay(15);
}
}
아날로그 출력은 0~255값을 쓸 수 있다. PWM으로 밝기를 0부터 255까지 키웠다가 다시 0까지 내려가는 것을 반복한다.
2.mp4
const int buttonPin = 33;
const int ledPin = 4;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
버튼 핀을 33번에 연결했으므로 핀 번호를 33번으로 설정하고, 버튼을 누른 것과 안 누른 것이 LOW와 HIGH값을 가지고 그 결과 값을 LED와 연결한다.
3.mp4
const int potPin = 34;
const int ledPin = 4;
int potValue = 0;
void setup() {
pinMode(potPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
potValue = analogRead(potPin);
analogWrite(ledPin, map(potValue, 0, 4095, 0, 255));
delay(500);
}
가변저항 모듈을 34번 핀에 연결하고, potValue를 사용하여 가변저항의 값을 저장하는 변수를 만든다. 아날로그 입력은 0~4095값을 가지기 때문에 가변저항 값이 변할 수록 LED의 밝기도 변하게 작성하였다.
4.mp4
PWM(pulse width modulation)이란 이름 그대로는 펄스 폭 변조라는 뜻이며 디지털 신호 중 특정한 형태를 띈 신호를 말하는 용어이며 회로 제어에서 다양한 용도로 활용되고 있다. 양쪽이 모두 디지털 신호일지라도 PWM을 사용하면 아날로그 신호와 유사한 효과를 낼 수 있다는 점에서 기인한 방법이다.
디지털 신호의 출력이 HIGH인 시간과 LOW인 시간의 비율을 조정해서 아날로그 효과를 내는 방법이기 때문에 디지털 신호 만을 사용하는 마이크로 컨트롤러에서 아날로그 신호가 필요할 때 매우 유용하게 사용된다.
가장 간단한 예시는 RGBLLED이다.
위 그림처럼 색상의 강도를 다르게 해서 원하는 빛의 색을 만들 때 PWM이 사용이 된다.
아날로그 출력을 이용하여 외부 LED를 작동 시킬 때 처음 들어본 PWM이라는 단어가 나왔고 추가적으로 찾아 보았더니 처음에는 잘 이해가 가지 않았다. 하지만 RGBLED가 작동하는 방식을 알고 PWM을 이용한 코드를 살펴본 후 어떠한 원리로 작동하는지 알게 되었다. 또 ESPP32의 핀맵을 보고 올바른 방법으로 브레드 보드를 사용할 수 있게 되었다.



