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側で計算した方が速いだろうし。