Представляю сообществу простую, и главное сверхлёгкую библиотеку, с надёжным протоколом для рассширенного обмена данными между ардуино, и компьютером: https://yadi.sk/d/W2VNiusBo3gc6 Функции библиотеки позволяют, передавать на компьютер значения типа int от 0 до 9999 с int - "индексом отправителя", например номером датчика(пина) которому значение принадлежит. Данная библиотека реализована как для IDE Arduino (написана на C++), так и для IDE Processing (написана на Java). В теле примера для Arduino реализован алгоритм надёжного получения данных с любого количества датчиков(пинов), и отправления данных на компьютер. А также пример приёма данных с компьютера, и отправка их обратно. В теле примера для Processing реализован алгоритм приёма с данных с трёх различных (двух псевдо) датчиков от Arduino c определением откуда и что прилетело, а также выводом данных в окно программы. Разработка и тестирование происходили в IDE Arduino 1.6.5 а также Processing 3.0.1 на базе микроконтроллера Iskra Neo. Применение: Лично мне, нужно было получить значение угла (360 градусов), с точностью в пол-градуса(уже 720). Но так как Микроконтроллер может передавать значения лишь в однобайтовом режиме, то есть от 0 до 255, то этот диапазон оказался недостаточным для решения поставленной задачи. Было принято решение получить значение с пина на компьютер и уже там его обрабатывать. Диапазон протокола позволяет передавать полный диапазон значений с аналоговых входов, как от 0 до 1023, так и до 4095. Ибо как уже говорилось, возможности протокола позволяют передавать/принимать значения от 0 до 9999. Диапазон индексов библиотеки позволяет передавать/принимать значения от 0 до 29. Так как пинов у ардуино всего 20, да и не все аналоговые, то тридцать индексов более чем достаточно. Функция Christina.Send(int data, int index); принимает два значения: данные(значение с пина от 0 до 9999) и индекс (номер пина от 0 до 29) Функция Cristina.Get(int buf); инициализирует протокол приёма данных, вызывается во время активности порта. и принимает значение которое находится в буфере. Функция Сhristina.block(); возвращает массив из двух элементов, где первым элементом является индекс, а вторым значение. Поэтому для Processing и Arduino код немного отличается: для Processing: int[] arr = new int[2]; arr = christina.block(); где arr[0] индекс arr[1] данные для Arduino: int arr[2], *ln; ln = christina.block(); arr[0] = *(ln+0);//присвоение элементов массива по указателю //индекс arr[1] = *(ln+1); //данные
Огромное спасибо ) библиотека очень выручила))) подскажите а возможно увеличить диапазон индексов ? нужно хотя бы 500(((((
это точно Нафига нужна какая-та библиотека, да еще со странными ограничениями - только инт от 0 до 9999? - когда UART позволяет передавать и принимать любые типы данных с числами любого размера без всяких библиотек...
вместе с абдуриной. Выучил один МК - считай, все МК подвластны. А с абдуриной что? Стены возвел вокруг себя и сидишь как мудак внутри. Не зайти, не выйти. Выучил один АРМ - вообще подвластно всё, что программируется.