2017-06-07 4 views
0

I2Cを使用してマスタ/スレーブとして通信する2つのarduinosがあります。スレーブは、rpm値のように変化する値をマスターに送信しなければなりません。 このrpm値は、0〜9999 rpmになります。 は、私がどのように私は回転数が常に4バイトになることを確認することができI2Cに送信するためのArduino形式整数4バイトに

Wire.write(rpm); // respond with message of 4 bytes 

4バイトのメッセージとしてスレーブからマスタにこの値を送信したいですか?このリンクを

+1

Arduinoの 'int'は2バイトです。 –

答えて

0

あなたが長い、長いまたは符号なし使用することをお勧めしますarduinosデータ型

https://playground.arduino.cc/Code/DatatypePractices

の一覧を確認することができます。別の方法は、rpm値を文字列に変換し、必要に応じて左に0を書き込む方法です。

Wire.write(""+rpm); 

ゼロ埋め例:

String zeros = ""; 
if(rpm < 1000) 
    zeros += "0"; 
if(rpm < 100) 
    zeros += "0"; 
if(rpm < 10) 
    zeros += "0"; 

Wire.write(zeros + rpm); 
+0

'" "+ rpm'は動作しません。 –

+0

そのため、もう1つの例があります。 – amimaro

1

あなたはバイトのシーケンスを送信するために文字の配列を使用することができます。 Arduinoではintは16ビットです。常に4バイトを送信する必要がある場合は、マスクを使用して最初の2バイトを取得し、残りを0で埋めてください。

void SendInt(int value) 
{ 
    char values[4]; 
    values[0] = value & 0xff; 
    values[1] = (value & 0xff00) >> 8; 
    values[2] = 0; 
    values[3] = 0; 

    Wire.write(values, 4); 
} 
関連する問題