 | Тому, что на блоге не было давно статей с детальным обзором датчиков SmartBricks, есть одно объяснение - предыдущие обзоры рассматривали аналоговые датчики, которые по поведению ничем ни отличались от уже существующих LEGO датчиков, поэтому и при их программировании в тестах применялись те же самые средства, что и для обычных датчиков. |
Для новых цифровых датчиков в языках Python и NXC, использовавшихся для обработки данных в тестах, нет готовых библиотек для опроса SmartBricks датчиков. Поэтому, прежде чем проводить эксперименты с новым датчиком, нужно было разобраться с протоколами связи с датчиками и реализовать соответствующий функционал в языках программирования.
Следует отметить, что для среды программирования NXT-G, компания SmartBricks предлагает для загрузки уже готовые блоки, а также и примеры их использования. Но по причине неудобства использования этой среды в целом для тестирования - это больше касается возможностей взаимодействия с компьютером, нежели самого процесса программирования и производительности, было решено не использовать NXT-G для подготовки обзоров.
Прежде, чем перейти описанию того как работать с цифровыми датчиками в языках NXC и Python, нужно сначала обратить внимание на, то как устроен интерфейс общения NXT блока с датчиком через протокол
I2C. В целом, неплохая вводная есть известной книге
"Extreme NXT: Extending the LEGO MINDSTORMS NXT to the Next Level" (
*) и есть надежда, что это описание перекочует в
"перевод" на русский язык, который делается энтузиастами из Оренбурга. Сейчас же, в двух словах можно сказать, что цифровой датчик по сути представляет из себя отдельное вычислительное устройство, которое может отдавать данные - обработанные результаты измерений, причем обработка измерений может контролироваться снаружи - на устройство могут подаваться входные данные, задающие правила вычислений, или переменные, участвующие в этих вычислениях. Иными словами, NXT блок может передавать в датчик данные по I2C шине и считывать из датчика данные.