プロメモグラム

誰が見てもわかるような文章を目指す

Arduinoで送信した整数をiPhoneで読み込む

BLE shieldのble_writeは1バイトづつデータを送ることになる

送られたデータは1バイトであるchar型の配列となり、lengthで何個のデータが送られたかわかるようになっている。

文字であれば1バイト文字であればその値そのものが文字コードであるのでまったく問題ない。しかし数字であれば1バイトづつ分かれているので合体する必要がある。

以下のコードはサンプルであるSampleControlsからほぼ引用したものである。

for (int i = 0; i < length; i+=2)

{

UInt16 Value;

 

Value = data[i+1] | data[i] << 8;

NSString str = [NSString stringWithFormat:@“%d”, Value];

}

}

16ビットのint型を作りそこに上位4ビット、下位4ビットをor演算子で結合するだけの簡単なコードである。わざわざ記事にする必要があったのか。

for文でまわしているので複数の数字にも対応している。

また16ビットじゃあ何もできないじゃないかと思うかもしれないがarduinoで扱う数値はだいたい電圧であり、その電圧も0~1023で表現しているので全く問題ない、もし計算をしたいのであれば、iPhone側で計算した方が速いだろうし。