Заменить библиотеку Wire на TinyWireM

Я хочу интегрировать датчик расстояния vl53l0x Time of Flight от Pololu в свой проект. Они создали библиотеку для взаимодействия с vl53l0x по I2C, которая отлично работает на моем Uno. Единственная проблема в том, что Wire.h не работает на ATtiny85.

TinyWireM — это библиотека-заменитель для Wire, которая, как я думаю, будет совместима. У меня такой вопрос: как мне заменить все вызовы библиотеки Wire на вызовы библиотеки TinyWireM? Это так же просто, как заменить все экземпляры Wire на TinyWireM? Нужно ли мне что-то еще сделать, чтобы сделать библиотеку совместимой с ATtiny85?

Спасибо!

, 👍3

Обсуждение

Состояния: Незначительные изменения для согласованности с библиотекой Arduino 1.0 Wire (например, использует write() вместо send()). Размер буфера немного увеличен для использования Adafruit_LEDBackpack., @whispers


2 ответа


1

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

Если вы просто включите Wire, как обычно, он должен работать так же, как в UNO. За исключением установки других часов, если я правильно помню, они зафиксированы на 400 кГц.

,

1

Я не могу гарантировать, что это сработает, но, вероятно, можно просто изменить библиотеку. Исходный код для этой библиотеки датчика ToF можно найти здесь:

https://github.com/pololu/vl53l0x-arduino/blob/master/VL53L0X.cpp

Первый шаг — найти ссылку на Wire.h (строка 7 в этом файле) и изменить ее на TinyWireM.h. После этого вам нужно будет найти функции, которые вызывают библиотеку Wire, и заменить их соответствующими функциями TinyWireM. Они начинаются со строки 284 (Wire.beginTransmission(address);). Вы можете найти исходный код TinyWireM здесь (где должны быть указаны все функции в библиотеке):

https://github.com/adafruit/TinyWireM/blob/master/TinyWireM.cpp

Таким образом, Wire.beginTransmission(address); станет TinyWireM.beginTransmission(address);, а Wire.write(reg); станет TinyWireM.send(reg);

Я не уверен, что это все решение, но думаю, что это хорошее начало.

,