2016-08-31 5 views
2

Я пытаюсь качать малину Pi и Arduino по серийному общению. Моя цель в том, что пользователь управляет светодиодом Arduino от малины Pi.Raspberry Pi (node.js) и Arduino uno последовательная связь

Я нашел пример кода последовательной связи и автоматически отправляет String в Arduino каждые 2 секунды. Но я хочу сделать две вещи:

  1. Изменить значение, отправленное вместо 'hello'.
  2. И пользователь может отправить стоимость в любое время, а не автоматически.

Вы можете мне помочь? Я плохо разбираюсь в node.js.

var SerialPort = require("serialport") 
var serialPort = new SerialPort('/dev/ttyACM0', 
{ baudrate: 9600, 
    dataBits: 8, 
    parity: 'none', 
    stopBits: 1, 
    flowControl: false 
}); 

serialPort.on("open", function() { 
console.log('open'); 
serialPort.on('data', function(data) { // 아두이노로부터 전달된 데이터 
    console.log('data received: ' + data); 
}); 

serialPort.write("Hello from Raspberry Pi\n", function(err, results) { 
    console.log('err ' + err); 
    console.log('results ' + results); //전송한 바이트 수 
}); 

setInterval( 
function() { // 2초마다 아두이노에게 문자열을 전송하는 예 
    serialPort.write('hello'); 
}, 2000); 
}); 

ответ

0

Это не так уж далеко от работы. Несколько незначительных трюков 1. «Бодрет» должен быть смешанным «baudRate». 2. Для тех, кто работает с этим кодом, вам необходимо, конечно, указать имя устройства (первый параметр для конструктора последовательного порта, в приведенном выше примере '/ dev/ttyACM0'). Один из способов найти это - открыть Arduino IDE и посмотреть «Инструменты» | «Порт», как только вы найдете , который связывается с Arduino. 3. Наконец, приведенный выше код смущает, написав в двух местах. Просто напишите в функцию setInterval. Это отправляет строку «hello» каждые 2 секунды.

Вот код, который работал на меня:

var SerialPort = require("serialport") 
var serialPort = new SerialPort('/dev/cu.usbmodem15', 
{ 
    baudRate: 9600, 
    dataBits: 8, 
    parity: 'none', 
    stopBits: 1, 
    flowControl: false 
}); 

serialPort.on("open", function() { 
    console.log('comm open'); 
    serialPort.on('data', function(data) { 
    console.log('data received: ' + data); 
    }); 

    setInterval( 
    function() { 
     serialPort.write('hello'); 
    }, 2000 
); 
}); 
Смежные вопросы