[질문] node.js 스위치or센서 사용 질문



  • 안녕하세요 제가 node.js를 이용해서 웹으로 DC모터를 컨트롤하는 프로그램을 만들고 있습니다.
    현제 onoff모듈을 다운받아서 웹으로 DC모터를 정역제어 하는것까지 완성을했는데, 여기에 추가로 스위치나 센서를 추가해서 스위치를 건들면 DC모터가 완전히 off되는 프로그램을 추가하려고 합니다(스위치를 눌러서 off가 되면 스위치를 안눌러도 off상태유지)

     var express = require('express'),
          http = require('http'),
          app = express(),
          server = http.createServer(app) ;
      var bodyParser = require('body-parser') ;
      var GPIO = require('onoff').Gpio,
          up = new GPIO(18, 'out') ;
          down = new GPIO(22, 'out');
    
      app.use(bodyParser.json()) ;
      app.use(bodyParser.urlencoded({ extended : false })) ;
     
      app.get('/led', function(req, res) {
          res.sendfile('led_web.html', {root : __dirname }) ;
        }) ;
     
      app.post('/data', function(req, res) {
          var state = req.body.led ;
          if (state == 'on') {
              up.writeSync(1) ;
    	  down.writeSync(0) ;
            }
          else {
              up.writeSync(0) ;
    	  down.writeSync(0) ;
            }
    
      app.post('/data2', function(req, res) {
          var state = req.body.led ;
          if (state == 'on') {
              up.writeSync(1) ;
    	  down.writeSync(1) ;
            }
          else {
              up.writeSync(0) ;
    	  down.writeSync(0) ;
            }
          console.log(state) ;
          res.sendfile('led_web.html', {root : __dirname }) ;
        }) ;
        }) ;
      server.listen(8000, function() {
          console.log('Express server listenling on port ' + server.address().port) ;
        }) ;
    

    지금 제가 만든 프로그램이고 스위치나 센서를 19번 포트에 추가할 계획인데 GPIO부분에 sw1 = new GPIO(19, ‘in’, ‘both’); 를 추가해서 스위치를 사용할건데 어느부분에 명령문을 넣어야될지 감이 안잡히고 있습니다. 조언해주시면 감사하겠습니다.


  • administrators

    var GPIO = require(‘onoff’).Gpio,
    up = new GPIO(18, ‘out’) ;
    down = new GPIO(22, ‘out’),
    sw1 = new GPIO(19, ‘in’, ‘both’); 
    
    :
    :
    
    sw1 .watch(function(err, value) {
      //원하는 동작을 구현...
    });
    

    위와 같이 작성하면 되지 않을까요?
    지금 동작을 확인을 할 수 없어서 onoff 자료만 보고 정리해봤습니다.
    한번 테스트 해보세요.


  • Global Moderator

    @Jang-Suk-Jung 횽 멋져요 !!!

    @Seungrok-Han 록아 한번 좀 바줘 ㅜ.ㅜ



  • sw1 .watch(function(err, value) {
      up.writeSync(0);
      down.writeSync(0);
    });
    

    스위치를 누르면 종료가 되게 하기 위해서 up와 down을 0을 줬는데 오류가 뜨면서 node.js가 종료되버립니다 이것만 잡으면 해결될꺼같긴한데 어렵네요

    0_1464681024972_43.jpg



  • 다시한번 확인해봤는데 스위치사용하는 부분에서 괄호를 서버쪽같이 붙여서 그랬던거였네요

    스위치사용해서 멈추는거 정상적으로 작동합니다 ㅎㅎ


  • Global Moderator

    @산딸기워니 와우 성공하셨군요 영상이라도 부탁드립니다.
    너무 멋진갈여 ^.*



  • 유투브에 동영상을 올렸습니다 이제 스위치를 자기센서로 바꾸고 추가로 3개의 센서를 이용해서 센서에 on신호가 들어오면 html에서 확인할수 있는 프로그램만 만들면 끝날것 같습니다 ㅎㅎ


  • Global Moderator

    @산딸기워니 와 멋지네요 ^.*
    아 워니님은 블라인드는 잘 움직이시던가요 ? 예전에 지인분은 토크힘이 부족해서 모터를 서너게나 바꾸셨었데요 ㅋ



  • 토크는 전부 계산하고 구입한 모터라서 블라인드를 움직이는것은 무리가 없었어요 ㅎㅎ
    지금 남은 과제가 html에서 센서가 on상태인것을 확인하는것만 남았는데 박스를 생성해서 on상태면 박스에 색을 칠하는방법을 이용해볼까 하는데 html도 이번에 처음 만져본거라서 어떻게 해야될지 막막하네요 ㅎㅎ


  • Global Moderator

    @산딸기워니 css 를 사용하시려나요 ?

    머든 디자인이 항상 고민이라 저희는 요즘 예술계통 작가님들과 콜라보를 많이 추진하려 노력 중입니다. ^.^


  • administrators

    웹쪽 UI 프레임워크를 써보세요.
    개별적으로 CSS3를 사용하면 되기는 하지만 많이 번거로우실껍니다.
    아래 링크에서 적당한 프레임워크를 찾아보시고 쓰세요.

    https://colorlib.com/wp/html5-frameworks/

    맘에 드는 것이 없거나 한글로 된건 없냐 하시면 아래 제품을 한번 보세요.
    유명한 제니퍼 소프트에서 만든 UI 프레임 워크입니다.

    http://jui.io/

    도움이 되셨으면 좋겠네요.



  • 두분다 답변감사합니다 ㅎㅎ
    연휴간 계속해서 작업을 해봤는데 css는 따로 사용을 안하고 html에있는 프로그레스바를 이용해서 구현해볼까 합니다
    프로그레스바 자체는 구현이되는데 이안에 자바스크립트를 이용해서 센서가 on상태에 따라 프로그레스바를 움직여볼까 하는데 구현하기가 힘드네요 ㅜㅜ
    혹시 프로그레스바내부에 if문을 써서 센서의 상태를 읽어내는게 가능할까요??


  • administrators

    아래 링크 참고하시면 가능할 듯 싶습니다.

    http://www.w3schools.com/tags/tag_progress.asp
    http://www.hongkiat.com/blog/html5-progress-bar/

    프로그레스바는 사용자 입력을 받지 않고 화면에 출력만 하는 컴포넌트입니다.
    입력 받은 센서값이 변경될 때나 모터의 이동 거리가 변화될 때 프로그레스 값을 변경시키면 됩니다.

    HTML에 Javascript 코딩이 힘드실꺼 같아 UI 프레임워크 소개해드렸는데
    그게더 어려우셨나보네요. 위에 링크 내용을 찬찬히 살펴보시면
    이해가 되실껍니다.


답변을 위해 로그인하기