Интернет-магазин «Неглупый Дом»
В другом проекте LM75 управляет реле вентилятора/нагревателя. Здесь проще — цифровой термометр: датчик измеряет температуру, TM1637 показывает число, без автоматики.
Чтение такое же, как в термостате: 16-битный регистр по I2C, значащие 9 бит сдвигаются на 5 и умножаются на 0.125°C. Разница — результат просто выводится на экран вместо сравнения с порогами реле.
TM1637 — 4-значный дисплей, температура может быть отрицательной и с десятыми — значение умножается на 10 и выводится с точкой на одном разряде ("23.5").
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить.
#include <Wire.h>
#include <TM1637Display.h>
TM1637Display display(9, 10);
const int LM75_ADDR = 0x48;
float readLM75() {
Wire.beginTransmission(LM75_ADDR);
Wire.write(0x00);
Wire.endTransmission();
Wire.requestFrom(LM75_ADDR, 2);
int16_t raw = (Wire.read() << 8) | Wire.read();
raw = raw >> 5;
return raw * 0.125;
}
void setup() {
Serial.begin(9600);
Wire.begin();
display.setBrightness(5);
}
void loop() {
float temp = readLM75();
display.showNumberDecEx((int)(temp * 10), 0b01000000, false);
delay(1000);
}
Библиотека TM1637Display ставится через Менеджер библиотек. Для LM75 дополнительная библиотека не нужна — только `Wire.h`.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу: 201 ₽ 181 ₽ (экономия 20 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.