実現したいこと
ArduinoUNO(マスタ)でセンサ値を取得→NANO(スレーブ)へ数値を引き渡したい
発生している問題・分からないこと
NANO側で受信した数値が0になってしまう
*受信した数値をマスターへ送り返すと、マスター側では正しい数値が表示される。。(?)
エラーメッセージ
error
1特にエラーメッセージは発生しない
該当のソースコード
ArduinoUNO(マスター)
1//I2C 2 #include <Wire.h> 3 volatile byte b = 5; 4 5//Nunchuck 6 #include <WiiChuck.h> 7 Accessory nunchuck1; 8 uint8_t value_x; 9 10 11void setup() { 12 Serial.begin(9600); 13 14 //I2C 15 Wire.begin(); 16 17 //Nunchuck 18 nunchuck1.begin(); 19 nunchuck1.type = NUNCHUCK; 20 21} 22 23 24void loop() { 25 26 //Nunchck検出 27 nunchuck1.readData(); 28 value_x = nunchuck1.values[0]; 29 30 //NANOへ送信 31 Wire.beginTransmission(8); 32 Wire.write(value_x); 33 Wire.endTransmission(); 34 delay(5); 35 36 //NANOから受信 37 Wire.requestFrom(8, 1); 38 while (Wire.available()) { 39 byte c = Wire.read(); 40 Serial.println(c); 41 } 42}
ArduinoNANO(スレーブ)
1#include <Wire.h> 2 3volatile uint8_t a; 4 5void setup() { 6 Serial.begin(9600); 7 Wire.begin(8);// Slave ID #8 8 Wire.onReceive(receiveEvent); 9 Wire.onRequest(requestEvent); 10} 11 12void loop() { 13} 14 15//UNOデータ送信の受信 16void receiveEvent(int howMany) { 17 while (Wire.available()) { 18 a = Wire.read(); 19 Serial.println(a); 20 } 21} 22 23//UNO命令に応じ送信 24void requestEvent() { 25 Wire.write(a); 26}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
マスター側のシリアルモニタ→value_xの数値(30~230)が表示される
スレーブ側のシリアルモニタ→aの数値が常時0のまま
補足
マスター→スレーブに値を送る際にゼロとなっているようにみえるが、確認のためスレーブ→マスターへ値を送り返すと元の正しい数値が認識される。。なぜ。。?
![guest](/img/icon/icnUserSample.jpg)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。