1. 필요한 부품
LED
BLUE - wpi : 29
RED - wpi : 28
BUZZER
wpi : 24
BUTTON
wpi : 25
GND, 5V
GND : 물리적 6번
5V : 물리적 2번
2. 원하는 프로그램 내용
버튼을 3초 미만으로 계속 누르고 있으면, 파랑색 LED가 0.5초동안만 켜진후 꺼집니다.
버튼을 3초 이상 계속해서 누르고 있으면, Active 부져에서 300ms 동안 소리가 난 뒤에 빨간색 LED가 켜지도록 합니다.
3. 프로그램 코드
선언 부분 코드
const gpio = requre('node-wiring-pi');
const BLUE = 29;
const RED = 28;
const BUZZER = 24;
const BUTTON = 25;
let clock = null;
let started = false;
구현 부분 코드
const ControlBell = function(){
let data = gpio.digitalRead(BUTTON);
if(data){
if(started === false){
started = true;
clock = setTimeout(handleButton,3000);
}
}
else{
gpio.digitalWrite(Blue,1);
console.log("BLUE ON");
gpio.delay(500);
gpio.digitalWrite(Blue,0);
console.log("BLUE OFF");
}
started = false;
clearTimeout(clock);
}
const HandleButton = function(){
let data = gpio.digitalRead(BUTTON);
if(data){
gpio.digitalWrite(BUZZER,1);
console.log("BUZZER ON");
gpio.delay(300);
gpio.digitalWrite(BUZZER,0);
gpio.digitalWrite(RED,1);
}
}
후반부 종료 및 실행 코드
process.on('SIGINT', function(){
console.log("exit");
gpio.digitalWrite(BLUE,0);
gpio.digitalWrite(RED,0);
gpio.digitalWrite(BUZZER,0)
process.exit();
}
gpio.setup('wpi');
gpio.pinMode(RED,gpio.OUTPUT);
gpio.pinMode(BLUE,gpio.OUTPUT);
gpio.pinMode(BUZZER,gpio.OUTPUT);
gpio.pinMode(BUTTON,gpio.INPUT);
setImmediate(ControlBell);
'Coding > Raspberry pi - node.js' 카테고리의 다른 글
Relay 스위치와 소리센서 제어하기 (0) | 2019.10.07 |
---|---|
조도센서, 터치센서 다루기 (0) | 2019.10.07 |
실습 - Button, Buzzer, LED를 이용한 프로그램 제작하기 (0) | 2019.10.06 |
Buzzer 제어하기 (0) | 2019.10.06 |
임베디드 센서(Button) 제어하기 (0) | 2019.10.06 |
댓글