Arduino Mega (Master) читает данные о старой проволоке от Slave (ESP32 Dev Module)C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Arduino Mega (Master) читает данные о старой проволоке от Slave (ESP32 Dev Module)

Сообщение Anonymous »

Я использую Arduino IDE для загрузки и составления кода для этих микроконтроллеров. Это должен быть тестовый сценарий. Связь подобна следующему: < /p>
ПК -> Пользовательский ввод через последовательный -> 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();
}
}
Я подумал, что это будет ошибкой времени, поэтому я положил задержку (500); после Wire.endTransmission (); , чтобы у подчинения было некоторое время для обновления своего буфера. Это ничего не изменило, поэтому я добавил wire.flush (); , потому что я думал, что мастер будет читать старые данные из своего внутреннего проволочного буфера, и это тоже ничего не сделало. Итак, я спросил Chatgpt, но его результаты не сработали.

Подробнее здесь: https://stackoverflow.com/questions/797 ... p32-dev-mo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Arduino Mega (Master) читает данные о старой проволоке от Slave (ESP32 Dev Module)
    Anonymous » » в форуме C++
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Репликация Master-Slave в MariaDB. Ошибка подключения к мастеру «replicator@xxx:3306». Невозможно подключиться к серверу
    Anonymous » » в форуме Linux
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Akeneo/pim-community-dev dev-master требует PHP 8.1.* -> ваша версия PHP (8.0.25) не удовлетворяет этому требованию
    Anonymous » » в форуме Php
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как мне заставить RPLIDAR A1M6 выдавать правильные данные с помощью Arduino Mega?
    Anonymous » » в форуме C++
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • HC-05 LED не зажигает Arduino Mega 2560
    Anonymous » » в форуме Android
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»