2016-08-31 21 views
2

シリアル通信でRaspberry PiとArduinoをリンクしようとしています。私の目的は、ユーザーがラズベリーパイからArduinoのLEDを制御することです。Raspberry Pi(node.js)とArduino uno serial communication

私はシリアル通信のサンプルコードを見つけ、2秒ごとに自動的にArduinoにStringを送信します。しかし、私は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. 'ボーレート'はミックスキャップ 'ボーレート'にする必要があります。 2.このコードを実行している人は、 デバイス名(上記の例では のシリアルポートコンストラクタの最初のパラメータ、/ dev/ttyACM0)を見つける必要があります。これを見つける1つの方法は、 にArduino IDEを開き、 'Tools' |あなたがArduinoと通信する を見つけたら、 'Port' 3.最後に、上のコードは2つの場所で書くことによって混乱します。 setInterval関数を に書き込んでください。これは2秒ごとに 'hello'文字列を送信します。ここで

は私のために働いていたコードは次のとおりです。

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