Не могу управлять светодиодом с помощью одного HTML-файла и Джонни Пять

Я новичок в этом. Я нашел некоторый код для управления Arduino во главе с одним файлом html. Они сказали, что мы должны использовать протокол johnny-five и node-js для управления им. Но я обнаружил проблему с этим способом, мне удалось подключиться к Arduino и включить локальный хост. Но, я просто нашел пару кнопок, и управлять светодиодом бесполезно. Я пытался решить это, и ничего не произошло.

Это где мой исходный код

<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();
        });
    });
});

person JeJe    schedule 16.03.2017    source источник


Ответы (1)


Вы запускаете свой сервер на порту «8080», но подключаетесь к socket.io через порт по умолчанию (80). Я считаю, что это может быть проблемой. Попробуйте изменить строку в html на:

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

Кроме того, если у вас есть какая-либо ошибка в консоли браузера, было бы полезно показать это сообщение.

person Slawomir Pasko    schedule 16.03.2017
comment
Скорее заставьте Arduino прослушивать порт 80. Тогда вам не нужно указывать порт для подключения, так как 80 используется по умолчанию для веб-приложения. - person Morgoth; 16.03.2017