어제 PWM에 대해서 공부하며,
digitalWrite와 delay 함수를 이용하여
PWM 역할을 할 수 있는 코드를 만들면, 비슷하게 출력이 될까?
라는 생각을 가지게 되어서
정말 간단하게 한번 구현해보았다.
void setup() {
Serial.begin(9600);
pinMode(10,OUTPUT);
}
void loop() {
if(Serial.available()){
int i = Serial.read();
int j = 0;
if (i ==49)
{
for (j=0;j<300;j++) // 여기서 300은 임의로 정한 숫자이다.
{
digitalWrite(10,1);
delay(1);
digitalWrite(10,0);
delay(1);
}
}
if (i==50)
{
for (j=0;j<300;j++)
{
digitalWrite(10,1);
delay(1);
digitalWrite(10,0);
delay(4);
}
}
}
}
디지털 신호 0과 1이 짧은 간격으로 반복되는 것에 착안하여
시리얼 모니터에 1과 2를 대입했을 때, duty cycle이 각각 50%, 20%가 되도록 작성해보았다.
영상에서는 차이가 잘 안보이지만, 실제로 보면 차이가 난다 ㅠㅠ...