Скачать без регистрации и СМС!

Некоторые библиотеки, используемые в проекте, из тех, которые можно считать условно “универсальными” и применять где-то еще, потихоньку оформляются и выкладываются на гитхаб. Там будет, конечно, этих библиотек – Кот наплакал. В своей основной массе, слишком уж специфичные вещи приходится создавать под собачку.

Но всегда есть куча, каких-нибудь маленьких примитивных библиотечек из трех строк, которые и самому-то написать – пять минут, ниочем. Но, бывает, так лень… На такие, вот, случаи, авось кому сгодится…


Наздоровье:

https://github.com/Jim1537/LIKe9-project

На сегодняшний день предлагаю публике две “универсальные” библиотеки:

  • LK9analog. Чтение любых аналоговых девайсов и получение данных в условных попугаях (0-254).
    Показана на примере простого фоторезистора. Скажем, интенсивности света, в этом случае: 0 = “вай темно, баюс-баюс!”; 255 = “глаза, мои глаза!”.
    Но это может быть любое аналогичное по свойствам устройство.
  • LK9thermo. Чтение терморезистора.
    Заточена конкретно под терморезисторы т.к. имеет внутренние функции подсчета температур и выдает их буквально (float), а не в абстрактных попугаях. Доступна выдача в конкретных Кельвинах, чотких Фаренгейтах или этих ваших чмошных Цельсиях.

Обе библиотеки имеют внутренний таймер чтения данных (который, кстати, не теряет свой интервал, при переполнении millis!). Ясен пень, интервал можно задавать самому.

Первую из библиотек, в контексте фоторезистора, я использовал не только в собачке, но и вот тут. Для собачки эта же библиотека используется при получении не только данных с фоторезисторов, но и со всех газовых анализаторов. Т.е. при инициализации создается с пол дюжины одинаковых по структуре объектов, но каждый со своими свойствами и временными интервалами.

Вот, скажем, на кой хрен дергать тот же фоторезистор при каждом проходе цикла? Один раз в секунду – достаточно. Или сенсор “качества воздуха”. Качество воздуха не меняется по сто раз в секунду. Это медленный процесс. Дергать этот сенсор чаще чем раз в три-пять минут – вообще никакого смысла нет.

В коде же основного цикла все эти объекты просто вызываются на апдейт:

snsTHR.update();
snsALC.update();
snsSMK.update();
snsCMO.update();
snsNGS.update();
snsAIR.update();

У объектов, для которых “пришло время” – вот там уже процессор почешет шпиньки, почитает, посчитает, преобразует и сохранит данные. Остальные, для которых в этом проходе цикла “время еще не пришло” – просто просвистят мимо без задержек! Т.о. не возникнет ситуации, когда при наличие миллиона подобных устройств, чтение и обработка каждого из них будет происходить в каждом прохождении цикла, тормозя все остальное, что в нем происходит.

В то же время, последние данные с любого из устройств все равно будут доступны у каждого из объектов. Их можно запросить, не заставляя его снова чесать шпиньки и пересчитывать данные с нуля. Объект просто вернет последнее сохраненное обработанное значение. Не важно, в этом проходе цикла он его посчитал или сотнями проходов цикла ранее.


В более простых случаях, встроенные таймеры просто избавляют вас от необходимости использовать кретинский delay() в основном цикле (для медитативного размеренного вывода данных в консоль или на график, например).

Помните, что функция delay() – порождение Диавола, в наказание ленивым индус… программистам! Только кающийся пройдет!

Сами таймеры не используют внутренние прерывания процессора (кроме тех, что дергает millis) ибо, когда приходится использовать несколько разных библиотек из разных источников… Там… Не знаю… Какой-нибудь NeonPixel от адафрута (вообще, избегайте этой библиотеки – она вас зохавает! Порождение Диавола! Кайтесь!). То там такой цирк с конфликтами начинается, что ну его нахрен. Пара лишних байт в памяти того не стоят…


На гитхаб выкладываются только мои лично персонально собственные полностью оформленные библиотеки настуканные по клавиатуре вот этими самыми кривыми руками.

As is. All sales final. No returns. No refund. Администрация не несет. Свой страх и риск. Выдави шнур, выдерни стекло.

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


Прочие библиотеки используемые в проекте, будут потихоньку добавляться по мере оформления до не слишком стыдного состояния. Это та еще морока, на самом деле и, до кучи, не является для меня сейчас приоритетным направлением. Так… Под пиво вечерком, когда не лень…

Поделиться: