ПК -> Пользовательский ввод через последовательный -> Master -> Пользовательский ввод через Wire /i2c -> Slave -> Пользовательский ввод через Wire /i2c -> Master -> Пользовательский ввод через серийный Другое письмо получает до введенного письма.
Slave: < /p>
Код: Выделить всё
received_data:
72, 1
request_data:
72, 1
received_data:
65, 1
request_data:
65, 1
received_data:
76, 1
request_data:
76, 1
received_data:
79, 1
request_data:
79, 1
< /code>
Master: < /p>
Received: 32 bytes from Slave
191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
Received: 32 bytes from Slave
72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Received: 32 bytes from Slave
65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Received: 32 bytes from Slave
76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
< /code>
code < /strong>
slave: < /p>
#include
uint8_t wire_buffer[32];
uint8_t wire_buffer_length = 0;
void setup() {
memset(wire_buffer, 0, 32);
Wire.setPins(26, 25);
Wire.begin(10);
Serial.begin(115200);
Wire.onRequest(wire_request);
Wire.onReceive(wire_receive);
}
void loop() {
}
void wire_receive(int len) {
wire_buffer_length = len;
for (uint8_t i = 0; i < len; i++)
wire_buffer[i] = Wire.read();
check_wire();
}
void wire_request() {
Wire.write(wire_buffer, 32);
Serial.println("request_data: ");
for (uint8_t i = 0; i < wire_buffer_length; i++)
Serial.print(String(wire_buffer[i]) + ", ");
Serial.println(wire_buffer_length);
}
void check_wire() {
Serial.println("received_data: ");
if (wire_buffer_length) {
for (uint8_t i = 0; i < wire_buffer_length; i++)
Serial.print(String(wire_buffer[i]) + ", ");
Serial.println(wire_buffer_length);
}
}
< /code>
Master: < /p>
#include
void setup() {
Serial.begin(9600);
Serial.println("I2C Test Start");
Wire.begin();
}
void loop() {
if (Serial.available()) {
Wire.beginTransmission(10);
while (Serial.available())
Wire.write(Serial.read());
Wire.endTransmission();
delay(500);
byte buffer[32];
int i = 0;
Wire.flush();
Serial.println("Received: " + String(Wire.requestFrom(10, 32)) + " bytes from Slave");
while (Wire.available() && i < 32) {
buffer[i++] = Wire.read();
}
for (int j = 0; j < i; j++) {
Serial.print(buffer[j]);
Serial.print(", ");
}
Serial.println();
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... p32-dev-mo