Emu(lator) + (Ar)duino
Processing と Arduino の違いについて
Emuduino(Processing)で作成したプログラムを実機であるArduinoで動作させるには,注意が必要です。一見,両者のプログラムは,よく似ています。しかし,そもそもEmuduino(Processing)は,Javaがベース,ArduinoはC言語がベースなので,その仕様の違いがバグの原因となります。
Emuduinoの開発中に気になった点や注意すべき内容をここにまとめました。
型の違いについて
- Processingには,unsigned型が存在しない。
- Processingには,byte, word型が存在しない。
- Arduinoのcharは8bit, Processingのcharは16bit
- Arduinoのintは16bit, Processingのintは32bit
| Arduino | Processing | |||
|---|---|---|---|---|
| 名前 | 値の範囲 | 名前 | 値の範囲 | |
| boolean | 真trueか偽 false | 同等 | boolean | 真trueか偽 false |
| char | -128 .. 127 | 相違あり | char | char is two bytes (16 bits) |
| unsigned char | 0 .. 255 | 該当なし | ||
| byte | 0 .. 255 | 該当なし | ||
| int | -32768 .. 32767 | 相違あり | int | -2,147,483,648 .. 2,147,483,647 |
| unsigned int | 0 .. 65535 | 該当なし | ||
| word | 0 .. 65535 | 該当なし | ||
| long | -2,147,483,648 .. 2,147,483,647 | 同等 | long | -2,147,483,648 .. 2,147,483,647 |
| unsigned long | 0 .. 4294967295 | 該当なし | ||
| float | -3.4028235E+38 .. 3.4028235E+38 | 同等 | float | -3.40282347E+38 .. 3.40282347E+38 |
| double | -3.4028235E+38 .. 3.4028235E+38 | 同等 | double | -3.40282347E+38 .. 3.40282347E+38 |
| 該当なし | String | 日本語を含むあらゆる文字 |
構文上の注意点
Arduinoで使用される#define文は,Processingには存在しない。int 型の定数として宣言すること。
配列の宣言方法の違い
配列の初期化方法の違い
| Arduino | Processing | |
|---|---|---|
| int array1[] = { 1, 2, 3 }; | OK | OK |
| int[] array2 = { 1, 2, 3 }; | NG | OK |