2017-03-16 45 views
0

我是這個的新手。我發現了一些代碼來控制一個HTML文件所導致的Arduino。他們說我們必須使用johnny-five和node-js協議來控制它。但是我發現這樣的問題,我成功連接到Arduino並打開本地主機。但是,我只找到了幾個按鈕,控制LED是沒用的。我會盡力解決它,並沒有發生任何事情。無法通過單個html文件和johnny五來控制LED

這在我的源代碼 The code

<html> 
    <head> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
     <script src="/socket.io/socket.io.js"></script> 
     <script> 
     $(document).ready(function() { 
      var socket = io.connect('http://localhost'); 
      $('#button').click(function(e){ 
      socket.emit('click'); 
      e.preventDefault(); 
      }); 
     }); 
     </script> 
    </head> 
    <body> 
     <button id="button" href="#">LED ON/OFF</button> 
    </body> 
</html> 

而且

var app = require('http').createServer(handler), 
    io = require('socket.io').listen(app), 
    fs = require('fs'), 
    five = require('johnny-five'); 

app.listen(8080); 

function handler(req, res) { 
    fs.readFile(__dirname + '/index.html', 
     function(err, data) { 
      if (err) { 
       res.writeHead(500); 
       return res.end('Error loading index.html'); 
      } 

      res.writeHead(200); 
      res.end(data); 
     }); 
} 

board = new five.Board(); 

board.on("ready", function() { 
    led = new five.Led(13); 

    io.sockets.on('connection', function(socket) { 
     socket.on('click', function() { 
      led.toggle(); 
     }); 
    }); 
}); 

回答

0

您在端口 '8080' 運行服務器,但你連接到socket.io默認端口(80)上。我相信這可能是問題所在。嘗試將html中的行更改爲:

 var socket = io.connect('http://localhost:8080'); 

另外,如果您在瀏覽器控制檯中有任何錯誤,則顯示此消息會有幫助。

+0

謝謝先生。它的工作原理 – JeJe

+0

使Arduino偵聽端口80.然後你不必指定一個端口來連接,因爲80是Web應用程序的默認端口。 – Morgoth