IchigoJamがI2C通信をサポートしているということで、これをマスターとしたI2C(アイアイシー:Inter-Integrated Circuit)通信をArduinoとIchigoJam間でやったメモです。
参考 : http://nuneno.cocolog-nifty.com/blog/2015/05/ichigojamarduin.html
環境: Arduino 1.6.12 / Windows 10, IchigoJam Basic 1.2.1
SDA: ArduinoのA4 – IchigoJamのIN3
SCL: ArduinoのA5 – IchigoJamのSCL
2kΩの抵抗がなかったので、1kを二つ直列に。
白: 3.3V
黒: GND
黄: Clock
橙: Data
データ送信
IchigoJam(マスタ) -> Arduino(スレーブ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <Wire.h> void receiveEvent(int n) { byte d; for (int i=0; i < n; i++) { if(Wire.available()) { d = Wire.read(); Serial.println(d); } } } void setup() { Serial.begin(115200); Wire.begin(0x10) ; Wire.onReceive(receiveEvent) ; } void loop() { } |
1 2 3 4 |
10 POKE #700,11,12 20 POKE #702,21,22,23,24,25,26,27,28 30 R=I2CW(#10,#700,2,#702,8) 40 PRINT R |
IchigoJamから送られた8バイトのデータをArduinoのコンソールで受信を確認。
Rはリターンコード。0で正常終了。
データ受信
IchigoJam(マスタ) <- Arduino(スレーブ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <Wire.h> void receiveEvent(int n) { byte d; for (int i=0; i < n; i++) { if(Wire.available()) { d = Wire.read(); Serial.println(d); } } } void requestEvent() { Wire.write("12345678"); } void setup() { Serial.begin(115200); Wire.begin(0x10) ; Wire.onRequest(requestEvent) ; Wire.onReceive(receiveEvent) ; } void loop() { } |
1 2 3 4 5 6 |
10 POKE #700,0,0 20 R=I2CR(#10,#700,2,#702,8) 30 PRINT R 40 FOR I=0 TO 7 50 PRINT CHR$(PEEK(#702+I)) 60 NEXT |
Arduinoから送られた8バイトのデータをIchigoJamで受信を確認。(1から8までの文字) Rはリターンコード。0で正常終了。 テストでは、2台のIchigoJamを使って同時に実行してみましたが、問題なく独立して通信できました。