Формат данных о связи I2C между двумя arduinos - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть 2 ардуино, которые подключены через I2C.Я не знаю, имеет ли это отношение, но master - это nodemcu, а slave - это nano.Моя проблема заключается в отправке данных в правильном формате от ведомого к ведущему, когда мастер запрашивает их.

Это МАСТЕР-код:

#include <Wire.h>

void setup() {
 Serial.begin(9600); /* begin serial for debug */
 Wire.begin(D1, D2); /* join i2c bus with SDA=D1 and SCL=D2 of NodeMCU */
}

void loop() {
 Wire.beginTransmission(8); /* begin with device address 8 */
 Wire.write("Hello Arduino");  /* sends hello string */
 Wire.endTransmission();    /* stop transmitting */

 Wire.requestFrom(8, 13); /* request & read data of size 13 from slave */
 while(Wire.available()){
    char c = Wire.read();
  Serial.print(c);
 }
 Serial.println();
 delay(1000);
}

Это РАБНЫЙ код:

#include <Wire.h>

int value = 2;

void setup() {
 Wire.begin(8);                /* join i2c bus with address 8 */
 Wire.onReceive(receiveEvent); /* register receive event */
 Wire.onRequest(requestEvent); /* register request event */
 Serial.begin(9600);           /* start serial for debug */
}

void loop() {
 delay(100);
}

// function that executes whenever data is received from master
void receiveEvent(int howMany) {
 while (0 <Wire.available()) {
    char c = Wire.read();      /* receive byte as a character */
    Serial.print(c);           /* print the character */
  }
 Serial.println();             /* to newline */
}

// function that executes whenever data is requested from master
void requestEvent() {

 char my_str[8]; // an array big enough for a 5 character string
 //  Serial.begin(9600);
    my_str[0] = 'H'; // the string consists of 5 characters
    my_str[1] = value;
    my_str[2] = 'l';
    my_str[3] = 'l';
    my_str[4] = 'o';
    my_str[5] = 'o';
    my_str[6] = 'o';
    my_str[7] = 0; // 6th array element is a null terminator
    Wire.write(my_str);

}

Теперь проблема в том, что на хозяине, "2", я получаю "".Вместо того, чтобы получить "H2llooo", я получаю "Hllooo".Если я заменю «my_str [1] = значение;»with "my_str [1] =" 2 ";"тогда работает нормально, но я хочу использовать эту переменную, которая является целым числом ... Я был бы признателен за любую помощь

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...