Отправка данных по I2C

Тема в разделе "Arduino & Shields", создана пользователем vla9891, 27 окт 2015.

  1. vla9891

    vla9891 Нуб

    Добрый день
    Подскажите подключил 2 ардуино про микро и мега2560 по I2C.
    Микро читает данные с датчика А, Б, С, и т.д. (тип float)
    senA = считаю умножаю делю
    потом
    Wire.write(senA)
    Мега2560 все получает.
    Вопрос как показания с датчиков отправить одной строкой типа
    Wire.write(senA;senB;senC)
    Как создать такую строку для отправки какой нужен тип данных.
     
  2. Vetrinus

    Vetrinus Гик

    Ну, вообще, string вам нужен. Только вот почему вам нужно непременно все отдать одной строкой, и как вы будете ее интерпретировать?
     
  3. vla9891

    vla9891 Нуб

    Спасибо что ответили.
    Про микро висит на диагностике в авто. Собирает данные.
    И посылает меге один раз, а та их обрабатывает.
    Я думаю так быстрее чем значение каждого датчика отправлять.
    Хотя я не против и каждый отправлять только как меге объяснить где какой датчик?
    Какой-то идентификатор надо добавлять.
    Но я могу только значение одного датчика отправить принять.
    Что -то добавить ну никак.
    например вот так я пытаюсь отправить:
    int A=0;
    int B=0;
    char* msg;
    void setup () {
    A=45;
    B=100;
    sprintf(msg,"1A",A,"A1","1B",B,"B1");
    Wire. begin(8);
    Wire. onRequest(requestEvent);
    }
    void loop () {
    }
    void requestEvent()
    {
    Wire.write(msg);
    }
    Хочу получить строку 1А_значение_первое_А11В_значение_второе_В1
    На меге вижу -1
    Может кто готовый пример подскажет где есть.
    Все что нашел примеры это отправить А получил А и все.
    По Serial нашел готовый пример.
     
  4. Megakoteyka

    Megakoteyka Оракул Модератор

    char* msg; - не инициализированный указатель, указывает в никуда.
    (msg,"1A",A,"A1","1B",B,"B1"); - https://ru.wikipedia.org/wiki/Print....B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F

    char msg[32];
    sprintf(msg, "1A_%d_A11B_%d_B1", A, B);
     
    Последнее редактирование: 29 окт 2015