Можно ли отправить массив с плавающей запятой через I2c?

Я сам пробовал это несколько раз, но так и не смог отправить или получить его должным образом. Я спрашиваю себя, возможно ли это, и если да, то может ли кто-нибудь объяснить, как?

Удачи!

, 👍0

Обсуждение

Возможно. Вы дали команду отправить оба байта с плавающей запятой и правильно соединить их после этого. Пожалуйста, укажите свой код в вопросе, чтобы мы могли вам помочь., @chrisl


1 ответ


1

Ниже приведена простая переработка руководства по проводному соединению главного записывающего устройства и подчиненного приемника, https://www.arduino.cc/ en/Tutorial/MasterWriter, для вектора чисел с плавающей запятой.

Набросок мастера

#include <Wire.h>

const int DEVICE = 8;

void setup() {
  Wire.begin();
  Serial.begin(9600);
}

void loop() {
  const int VEC_MAX = 6;
  float vec[VEC_MAX];
  uint8_t* vp = (uint8_t*) vec;

  Wire.requestFrom(DEVICE, sizeof(vec));
  while (Wire.available()) {
    *vp++ = Wire.read();
  }

  for (int i = 0; i < VEC_MAX; i++) {
    Serial.println(vec[i]);
  }

  delay(500);
}

Скетч подчиненного приемника

#include <Wire.h>

const int DEVICE = 8;
const int VEC_MAX = 6;
float vec[VEC_MAX] = { ... };

void setup() {
  Wire.begin(DEVICE);
  Wire.onRequest(requestEvent);
}

void loop() {
  delay(100);
}

void requestEvent() {
  Wire.write((uint8_t*) vec, sizeof(vec));
}

Можно ли отправить массив с плавающей точкой через I2c

Поэтому я бы ответил - Да.

,