#include <OneWire.h>
#include <DallasTemperature.h>
// Определяем пины, к которым подключены светодиоды
const int ledPins[] = {6, 7, 8, 9, 10, 11, 12, 13};
const int numLeds = 8;
// Определяем пин, к которому подключен датчик DS18B20
const int oneWirePin = A0;
// Создаем объекты для работы с датчиком DS18B20
OneWire oneWire(oneWirePin);
DallasTemperature sensors(&oneWire);
// Задаем диапазон температуры, в котором должны загораться светодиоды
const int minTemperature = 15; // Минимальная температура (градусы Цельсия)
const int maxTemperature = 35; // Максимальная температура (градусы Цельсия)
void setup() {
// Устанавливаем пины светодиодов как выходы
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW); // Выключаем все светодиоды в начале
}
// Инициализируем последовательный порт для отладки
Serial.begin(9600);
// Инициализируем датчик DS18B20
sensors.begin();
}
void loop() {
// Запрашиваем температуру с датчика DS18B20
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0); // Получаем температуру в градусах Цельсия с первого датчика
// Выводим значение температуры в последовательный порт
Serial.print("Температура: ");
Serial.print(temperatureC);
Serial.println(" °C");
// Определяем количество светодиодов, которые нужно зажечь, в зависимости от температуры
int numLedsToLight = map(temperatureC, minTemperature, maxTemperature, 1, numLeds);
// Убедимся, что numLedsToLight в пределах от 1 до numLeds
numLedsToLight = constrain(numLedsToLight, 1, numLeds);
// Зажигаем нужное количество светодиодов
for (int i = 0; i < numLeds; i++) {
if (i < numLedsToLight) {
digitalWrite(ledPins[i], HIGH); // Зажигаем светодиод
} else {
digitalWrite(ledPins[i], LOW); // Выключаем светодиод
}
}
delay(1500);