PWM
PWM이랑 Pulse Width Modulation의 줄임말로 펄스폭변조 라는 뜻을 가지고 있습니다.
디지털 기기에서 아날로그 결과를 얻기 위한 기법으로(DC모터 속도제어, LED밝기제어에 활용되는 기술입니다.)
대표적인 함수는
int softPwmCreate(pin, initialValue, pwmRange); // 정상 0 리턴
void softPwmWrite(pin, value);
initialValue - 한 주기(Frequency)를 세분화했을때 시작 값
pwmRange - 한 주기의 끝 값.
ex) softPwmCreate(REDLED_PIN, 1, 100);
value - Duty cycle 크기의 값. 단, 범위에 있어야 합니다.
ex) softPwmWrite(REDLED_PIN, 19); 1~100 중에서 19만큼의 밝기로 셋팅
주기
이런식으로 duty cycle은 이렇게 생겼으며 HIGH는 켜져있는 시간을 나타내며 LOW는 꺼져있는 시간을 나타냅니다.
코드 예제
버튼을 누를때 마다 빨간색 LED의 밝기가 1>25>50>75>100 으로 바뀌는 코드
const gpio = require('node-wiring-pi');
const RED = 23;
const BUTTON = 25;
let count = 0;
const DetectButton = function(){
switch(count){
case 0:
gpio.softPwmWrite(RED,1);
count++;
break;
case 1:
gpio.softPwmWrite(RED,25);
count++;
break;
case 2:
gpio.softPwmWrite(RED,50);
count++;
break;
case 3:
gpio.softPwmWrite(RED,75);
count++;
break;
case 4:
gpio.softPwmWrite(RED,100);
count = 0;
break;
default:
break;
}
}
process.on('SIGINT',function(){
gpio.softPwmWrite(RED,0);
console.log("exit");
process.exit();
}
gpio.wiringPiSetup();
gpio.pinMode(RED,gpio.OUTPUT);
gpio.pinMode(BUTTON,gpio.INPUT);
// 아래 두줄 코드는 맨 아래에 선언 합니다.
gpio.wiringPiISR(BUTTON,gpio.INT_EDGE_RISING,DetectButton);
gpio.softPwmCreate(RED,0,100);
'Coding > Raspberry pi - node.js' 카테고리의 다른 글
초음파 센서 제어와 웹 연동 (0) | 2019.11.15 |
---|---|
실습 - PWM을 이용한 LED 밝기 제어 (0) | 2019.10.09 |
인터럽트 방식으로 버튼 제어하기 (0) | 2019.10.09 |
실습 - 버튼, 광센서, 터치센서, Relay를 이용한 프로그램 (0) | 2019.10.07 |
실습 - 터치센서, 광센서를 활용한 코드 (0) | 2019.10.07 |
댓글