본문 바로가기
아두이노 기초 학습

12. 아두이노 시리얼통신 LED 밝기 조절( PWM )

by 에이치엘 2022. 12. 19.

★★ 준비물 ★★

◎ 저항 330 옴

◎ LED 1개

 

※아두이노의 PWM 핀

◎ 아두이노의 DigitalPin 중, 앞에 물결모양(~)이 있는 핀을 통해 PWM 을 사용할 수있습니다.

◎ PWM은 디지털핀을 0(LOW), 1(HIGH)가 아닌 아날로그 효과를 낼 수 있도록 제공하는 핀입니다.

※ 쉽게 이야기하자면, 디지털핀을 HIGH, LOW 값이 아닌 0~255 값으로 사용이 가능합니다.

( 좀 더 깊게 알고 싶다면 PWM 을 검색 )

 

★★ 회로 ★★

◎ 이전 시간 2번핀을 사용하였으나, PWM을 위해 3번 핀을 사용합니다.

 

1. 기초학습 11에서 사용된 코드를 다음과 같이 수정합니다

 

◎ analogWrite(핀번호, 값);  - 아날로그 값을 전달할 수 있습니다.

◎ 0~255 값을 시리얼 모니터에 입력하여 LED의 밝기 변화를 확인합니다.

◎ protocol.toInt();  - toInt()함수는 해당 문자열을 정수로 변경하는 것입니다. 기존 정수를 문자열로 변경할때는 String(정수) 를 이용하여 변경하였지만, 문자열을 정수로 변경하기 위해서는 toInt()를 사용해야됩니다.

 

2. 기초학습 4에서 배운 millis()를 이용하여 다음과 같이 코드를 수정합니다

◎ (라인5) byte index = 0 : 바이트형 변수( index )를 선언하고 0으로 초기화한다. ( 아두이노 자료형 검색 )

◎ (라인14) 기초학습 4 millis() 참고. ( 20 <- 값을 변경하여 LED 빛이 어떻게 변화하는지 확인한다 )

◎ (라인16) analogWrite(핀, index) : 아날로그핀에 index 변수를 넣는다. ( 값을 변화시키기 위해 변수를 사용 )

◎ (라인17) index++ : index는 0으로 초기화 되었으며, 0부터 1씩 증가한다. ( 20 millis 시간 마다 )

◎ (라인18) if( index >= 255 ) : 만약 index 변수의 값이 255와 같거나 크면 

◎ (라인19) index = 0 : index 변수에 0 값을 넣는다.

 

※ 본 코드에서는 시리얼모니터를 통해 값을 입력하지 않습니다.

※ 라인5은 index 변수에 255 값으로 초기화,  라인17은 ++을 --로 변경, 라인18은 index <= 0 , 라인19는 index=255 로 변경하여 실행하여 불빛이 어떻게되는지 확인합니다.

 

★★ 실행 영상은 패스합니다 ★★

 

★ 다음 시간에는 IOT코아, IOT리아 앱을 사용하여 PWM 값을 변경해보겠습니다.

 

★★★ 이번 시간에 숙지해야될 내용 ★★★

1. 문자열변수.toInt()  : 문자열 변수의 값을 정수로 변경하여 반환할 수 있다

2. analogWrite() : pwm 핀을 아날로그 효과를 주기위해 analogWrite() 함수를 이용하여 0~255 값을 통해 전압을 조절할 수 있다.

 

 

댓글