Заменить библиотеку Wire на TinyWireM
Я хочу интегрировать датчик расстояния vl53l0x Time of Flight от Pololu в свой проект. Они создали библиотеку для взаимодействия с vl53l0x по I2C, которая отлично работает на моем Uno. Единственная проблема в том, что Wire.h не работает на ATtiny85.
TinyWireM — это библиотека-заменитель для Wire, которая, как я думаю, будет совместима. У меня такой вопрос: как мне заменить все вызовы библиотеки Wire на вызовы библиотеки TinyWireM? Это так же просто, как заменить все экземпляры Wire на TinyWireM? Нужно ли мне что-то еще сделать, чтобы сделать библиотеку совместимой с ATtiny85?
Спасибо!
@Alex Wulff, 👍3
Обсуждение2 ответа
На самом деле, я думаю, теперь делать нечего, так как TinyWireM теперь включает в себя пакеты крошечных плат.
Если вы просто включите Wire, как обычно, он должен работать так же, как в UNO. За исключением установки других часов, если я правильно помню, они зафиксированы на 400 кГц.
Я не могу гарантировать, что это сработает, но, вероятно, можно просто изменить библиотеку. Исходный код для этой библиотеки датчика 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);
Я не уверен, что это все решение, но думаю, что это хорошее начало.
- Эмуляция 1-проводных устройств
- Wire.h не найден!
- Датчик Arduino Uno DHT11 Не удалось прочитать данные с датчика DHT
- Альтернативы библиотеке Wire для I2C
- ATtiny85 и DHT11 - Датчик всегда возвращает 0
- Библиотека Wire.h работает на Uno, но не компилируется для ATtiny85
- Считывание температуры (DS18B20) с помощью ATtiny85
- Использование библиотеки емкостных датчиков с мультиплексором 74HC4067
Состояния: Незначительные изменения для согласованности с библиотекой Arduino 1.0 Wire (например, использует write() вместо send()). Размер буфера немного увеличен для использования Adafruit_LEDBackpack., @whispers