ATtiny85 LM75 I2C
Я хотел бы считать температуру с LM75 с помощью ATtiny85 запуск ядра SpenceKonde и использование TinyWireM библиотека.
Мой логический анализатор не улавливает никакой связи I2C, когда я подключаю его к Arduino Nano, он работает нормально. В Nano нет необходимости в TinyWireM, так что это большая разница.
Поэтому я делаю вывод, что ATtiny85 не говорит с устройством на правильном сленге I2C.
Я также использую SoftwareSerial, и это работает нормально. Это видно в логическом анализаторе.
Библиотека LM75 не предназначена для ATtiny или TinyWireM, я заменяю ссылки Wire
на разместить по ссылке TinyWireM
.
Можно ли «просто» заменить Wire на TineWireM в библиотеке и можно ли таким образом ожидать получения значимых данных?
[обновленный код]
#include <Arduino.h>
#include <TinyWireM.h>
#include <LM75.h>
#include <SoftwareSerial.h>
#define SOFTWARE_SERIAL_TX_PIN 3
#define SOFTWARE_SERIAL_RX_PIN -1
LM75 sensor;
SoftwareSerial mySerial(SOFTWARE_SERIAL_RX_PIN, SOFTWARE_SERIAL_TX_PIN);
void setup() {
TinyWireM.begin();
mySerial.begin(2400);
mySerial.print("Starting..");
}
void loop() {
delay(1000);
mySerial.println("SO");
mySerial.println(sensor.temp());
delay(1000);
}
@Thijs, 👍3
Обсуждение2 ответа
Текущее ядро ATtiny включает библиотеку Wire для оборудования USI, используемого в Tinys. Таким образом, вам не нужно изменять библиотеку LM75, которая подвержена ошибкам.
Спасибо, этот фрагмент кода пропал, когда я редактировал вопрос (6 месяцев назад). Проблема остается., @Thijs
Может помочь, если вы обновите код до того, что вы на самом деле используете. Имейте в виду, что вы ничего не увидите в разрешении, которое вы выбрали в логическом анализаторе, поскольку I2C примерно в 50 раз быстрее последовательного порта., @Pylon
Я обновил вопрос шестимесячной давности, на который вы ответили, кодом, который я, возможно, использовал тогда. Но расскажите, пожалуйста, подробнее о скорости I2C., @Thijs
Привет и добро пожаловать в сообщество Arduino SE. Пожалуйста, расширьте свой ответ. Вы выявили некоторые проблемы, но, пожалуйста, обновите свой ответ, указав, как их решить. Например, вы можете продемонстрировать решение с помощью некоторых фрагментов кода и объяснения того, как оно устраняет проблемы, с которыми сталкивается ОП., @sa_leinad
Я знаю, что это старый пост, но, надеюсь, эта информация кому-то будет полезна. Я модифицировал библиотеку lm75, заменив все экземпляры Wire на TinyWire, и, как указано выше, ничего не получилось, но оказалось, что подтягивание 10 КБ на SCL / SDA является необходимостью для Attiny 85. По какой-то причине i2c отлично работает на Arduino UNO без pull ИБП, но не на Attiny 85. Короче говоря, добавьте подтягивающие резисторы, и все заработает. Бонусное изображение картофеля Attiny, LM75 и модуля дисплея, показывающего температуру.
привет Том, спасибо за ответ и отличную картинку :D не могли бы вы поделиться информацией о своем коде? какую библиотеку и ядро вы использовали, например. Я попробую, но, кажется, у меня тогда были подтягивания.., @Thijs
Я практически просто использовал библиотеку lm75 и TinyWireM, сделал копию библиотеки lm75, переименовал ее в lm75tiny и заменил все экземпляры Wire на TinyWireM. Закончилось этим: #include <TinyWireM.h> #include <lm75tiny.h> Термо TempI2C_LM75 = TempI2C_LM75(0x49,TempI2C_LM75::nine_bits); Затем прочитайте температуру следующим образом: int temp = termo.getTemp(); Единственная проблема: адрес lm75 необходимо подтвердить и обновить для любого датчика, который вы используете. Я думаю, что значение по умолчанию — 0x48, но мой датчик был 0x49., @Tom
- I2C с ATtiny85 на частоте 8 МГц с использованием библиотеки TinyWireM
- ATtiny85 I2C ЖК
- Библиотека Wire.h работает на Uno, но не компилируется для ATtiny85
- Связь I2C между Attiny85 в качестве ведущего устройства и Arduino UNO в качестве ведомого устройства
- Связь AtTiny44 и AtTiny 85
- Digispark Rev. 3 Kickstarter ATtiny85 использует все 6 контактов
- Увеличение скорости датчиков Vl6180x
- Акселерометр AtTiny85 и MMA8452Q не могут подключиться с помощью i2c
Не могли бы вы опубликовать свой код?, @Gerben
Я добавил код, который использую для тестирования, @Thijs
Похоже, что в setup() отсутствует вызов TinyWireM.begin(). Также не забудьте подтягивающие резисторы., @Mikael Patel
TinyWireM.begin()
является частью библиотеки, и у меня есть подтягивающие устройства, эта настройка работает на Arduino Nano., @Thijsi2c довольно легко реализовать как аппаратно, так и программно. так что вам может быть полезно просто написать свой собственный., @dannyf
@Thijs Установка не может работать на Nano, поскольку она не поддерживает USI, который является аппаратным модулем ATtiny., @Mikael Patel
Используйте LM35, который является аналогом., @Mert Gülsoy