Arduino+Processing библиотека Christina

Тема в разделе "Глядите, что я сделал", создана пользователем allesanbr, 13 фев 2016.

  1. allesanbr

    allesanbr Нерд

    Представляю сообществу простую, и главное сверхлёгкую библиотеку, с надёжным протоколом для рассширенного обмена данными между ардуино, и компьютером:

    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); //данные
     
  2. Dgg007

    Dgg007 Нуб

    Огромное спасибо )
    библиотека очень выручила)))
    подскажите а возможно увеличить диапазон индексов ? нужно хотя бы 500(((((
     
  3. ostrov

    ostrov Гуру

    Что мешает отправлять-принимать пакеты данных неограниченной длины? UART очень простой.
     
  4. Sr.Hardba$$er

    Sr.Hardba$$er Нуб

    От души помог, респект тебе!
     
  5. ostrov

    ostrov Гуру

    Сам себя не похвалишь, день зря прошел.
     
    b707 нравится это.
  6. b707

    b707 Гуру

    это точно :)
    Нафига нужна какая-та библиотека, да еще со странными ограничениями - только инт от 0 до 9999? - когда UART позволяет передавать и принимать любые типы данных с числами любого размера без всяких библиотек...
     
  7. parovoZZ

    parovoZZ Гуру

    вместе с абдуриной. Выучил один МК - считай, все МК подвластны. А с абдуриной что? Стены возвел вокруг себя и сидишь как мудак внутри. Не зайти, не выйти.
    Выучил один АРМ - вообще подвластно всё, что программируется.
     
  8. ИгорьК

    ИгорьК Гуру

    Эх, крут ты, @parovoZZ, неимоверно крут!
     
  9. parovoZZ

    parovoZZ Гуру

    Да вашпэ))

    А как надпись гуру под аватаркой сменить?
     
  10. b707

    b707 Гуру

    прогнуться перед админом :)
     
  11. ИгорьК

    ИгорьК Гуру

    А че написать?
     
  12. parovoZZ

    parovoZZ Гуру

    радиопридурак