Arduino Nano R4の活用 ⑨ I2C LPS22HBのスケッチ スケッチの説明<第4回>
QWICCコネクタにつないだ時のスケッチは、Wire.xxxxと記述していたところをすべてWire1.xxxに変更だけで記述自体は何も変わっていません。
●環境
- Arduino IDE;2.3.5
- Windows11;24H2
- Arduino Nano R4 1.5.1 PCはマザーボードのUSBポートから直接つなぐ。
●intはいろいろ
Arduino Uno3は8ビット・マイコンで、intは2バイトで-32768~32767の範囲を扱えます。Arduino Uno4は32ビット・マイコンでintは4バイトなので-2147483648~2147483647の範囲を扱えます。
なので、大きめの数値を扱うようなときに差が出ます。紛らわしいことだと思います。
現在、次の表記が使われます。
| 表現 | 値 | |
|---|---|---|
| int8_t | 1 バイトの符号付き整数 | -128~127 |
| uint8_t | 1 バイトの符号なし整数 | 0~255 |
| int16_t | 2 バイトの符号付き整数 | -32,768 ~ 32,767 |
| uint16_t | 2 バイトの符号なし整数 | 0 ~ 65,535 |
| int32_t | 4 バイトの符号付き整数 | -2,147,483,648 ~ 2,147,483,647 |
| uint32_t | 4 バイトの符号なし整数 | 0 ~ 4,294,967,295 |
| int64_t | 8 バイトの符号付き整数 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
| uint64_t | 8 バイトの符号なし整数 | 0 ~ 18,446,744,073,709,551,615 |
![]()
const unsigned char LPS22HB_address = 0x5d;
unsigned charは0~255の範囲を取るので、uint8_tで置き換えられると思います。
byte result[3];
byteは多くの言語では0~255の範囲を取るので、uint8_tで置き換えられると思います。
2か所を置き換えて実行しました。問題なく動いています。
●Arduino Nano R4のintの範囲を確かめる
Arduino Uno3は8ビット・マイコンで、intは2バイトで-32768~32767の範囲を扱えます。
Arduino Nano R4で、+32767を超えるとどうなるか確かめます。2バイト以上の大きな数値が扱えることが確認できました。
Arduino Nano R4で、int32_t(4 バイトの符号付き整数); -2,147,483,648 ~ 2,147,483,647を超えるとどうなるか確かめます。4バイト数値まで扱えることが確認できました。