У меня есть 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 ";"тогда работает нормально, но я хочу использовать эту переменную, которая является целым числом ... Я был бы признателен за любую помощь
Спасибо