1. 필요한 부품
LED
BLUE - wpi : 29
GREEN - wpi : 28
RED - wpi : 27
BUZZER
wpi : 25
LIGHT
wpi : 7
TOUCH
wpi : 23
2. 원하는 프로그램 내용
터치센서를 첫 번째로 터치하면 부져소리를 0.05초 동안 발생시킨 후, 3색 LED의 청록색을 켠다.
터치센서를 두 번째로 터치하면 부져소리를 0.08초 동안 발생시킨 후, 3색 LED의 청록색을 끈다.
청녹색LED가 켜진상태에서만 조도센서가 빛을 측정한다.
밝다가 어두워지면 빨강색 LED를 켜고, 다시 밝아지면 빨강색 LED를 끈다.
터치센서를 세 번째로 터치하면 부져소리를 0.1초 동안 2번(삐,삐) 발생시킨후, 3색LED가 모두 꺼진다
무한반복 실행되며, Ctrl + c를 누르면 모든 LED, 부져가 꺼진후 프로그램이 종료된다.
3. 코드구현
선언 부분 코드
const gpio = require('node-wiring-pi');
const BLUE = 29;
const GREEN = 28;
const RED = 27;
const BUZZER = 25;
const LIGHT = 7;
const TOUCH = 23;
var count = 0;
let clock = null;
구현 부분 코드
const CheckLight = function(){
let data = gpio.digitalRead(LIGHT);
if(!data){
console.log("밝아짐");
gpio.digitalWrite(GREEN,1);
gpio.digitalWrite(BLUE,1);
gpio.digitalWrite(RED,0);
}
else{
console.log("어두워짐");
gpio.digitalWrite(GREEN,0);
gpio.digitalWRite(BLUE,0);
gpio.digitalWrite(RED,1);
}
clock = setTimeout(checkLight,300);
}
const CheckTouch = function(){
let data = gpio.digitalRead(TOUCH);
setTimeout(CheckTouch,300);
if(data){
switch(count){
case 0:
gpio.digitalWrite(BUZZER,1);
gpio.delay(50);
gpio.digitalWrite(BUZZER,0);
gpio.digitalWrite(GREEN,1);
gpio.digitalWRite(BLUE,1);
CheckLight();
count++;
break;
case 1:
gpio.digitalWrite(BUZZER,1);
gpio.delay(80);
gpio.digitalWrite(BUZZER,0);
gpio.digitalWrite(GREEN,0);
gpio.digitalWrite(BLUE,0);
count++;
break;
case 2:
gpio.digitalWrite(BUZZER,1);
gpio.delay(50);
gpio.digitalWrite(BUZZER,0);
gpio.digitalWrite(BUZZER,1);
gpio.delay(50);
gpio.digitalWrite(BUZZER,0);
gpio.digitalWrite(RED,0);
gpio.digitalWrite(GREEN,0);
gpio.digitalWrite(BLUE,0);
count = 0;
break;
}
}
}
종료 및 실행코드
process.on('SIGINT',function(){
gpio.digitalWrite(RED,0);
gpio.digitalWrite(GREEN,0);
gpio.digitalWrite(BLUE,0);
gpio.digitalWrite(BUZZER,0);
console.log("exit");
process.exit();
});
gpio.setup('wpi');
gpio.pinMode(RED,gpio.OUTPUT);
gpio.pinMode(GREEN,gpio.OUTPUT);
gpio.pinMode(BLUE,gpio.OUTPUT);
gpio.pinMode(BUZZER,gpio.OUTPUT);
gpio.pinMode(LIGHT,gpio.INPUT);
gpio.pinMode(TOUCH,gpio.INPUT);
setTimeout(CheckTouch,10);
'Coding > Raspberry pi - node.js' 카테고리의 다른 글
인터럽트 방식으로 버튼 제어하기 (0) | 2019.10.09 |
---|---|
실습 - 버튼, 광센서, 터치센서, Relay를 이용한 프로그램 (0) | 2019.10.07 |
Relay 스위치와 소리센서 제어하기 (0) | 2019.10.07 |
조도센서, 터치센서 다루기 (0) | 2019.10.07 |
실습 - Button, Buzzer, LED를 이용한 프로그램 제작하기 - 2 (2) | 2019.10.07 |
댓글