Добрый день Подскажите подключил 2 ардуино про микро и мега2560 по I2C. Микро читает данные с датчика А, Б, С, и т.д. (тип float) senA = считаю умножаю делю потом Wire.write(senA) Мега2560 все получает. Вопрос как показания с датчиков отправить одной строкой типа Wire.write(senA;senB;senC) Как создать такую строку для отправки какой нужен тип данных.
Ну, вообще, string вам нужен. Только вот почему вам нужно непременно все отдать одной строкой, и как вы будете ее интерпретировать?
Спасибо что ответили. Про микро висит на диагностике в авто. Собирает данные. И посылает меге один раз, а та их обрабатывает. Я думаю так быстрее чем значение каждого датчика отправлять. Хотя я не против и каждый отправлять только как меге объяснить где какой датчик? Какой-то идентификатор надо добавлять. Но я могу только значение одного датчика отправить принять. Что -то добавить ну никак. например вот так я пытаюсь отправить: 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 нашел готовый пример.
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);