// Подключение библиотек
#include <Arduino.h>
// Определение пинов
const int sensorPin = A0; // Пин подключения датчика температуры
const int fanPin = 9; // Пин подключения вентилятора (PWM)
// Переменные
int sensorValue; // Значение с датчика температуры
int fanSpeed; // Скорость вентилятора
void setup() {
// Инициализация последовательной связи
Serial.begin(9600);
// Установка пина вентилятора как выход
pinMode(fanPin, OUTPUT);
}
void loop() {
// Чтение значения с датчика температуры
sensorValue = analogRead(sensorPin);
// Преобразование сырых данных в температуру (0-1023 в 0-5000 мВ)
float voltage = sensorValue * (5000.0 / 1024.0);
float temperatureC = voltage / 10.0;
// Расчет скорости вентилятора в зависимости от температуры
// Здесь можно настроить желаемые параметры
if (temperatureC < 25)
{
fanSpeed = 0; // Если температура ниже 25°C, выключаем вентилятор
}
else if (temperatureC >= 25 && temperatureC < 30)
{
fanSpeed = 30; // Если температура от 25°C до 30°C, устанавливаем скорость 100%
}
else if (temperatureC >= 30 && temperatureC < 40)
{
fanSpeed = 50;
}
else if (temperatureC >= 40 && temperatureC < 50)
{
fanSpeed = 70;
}
else if (temperatureC >= 50 && temperatureC < 60)
{
fanSpeed = 80;
}
else if (temperatureC >= 60 && temperatureC < 70)
{
fanSpeed = 90;
}
else if (temperatureC >= 70 && temperatureC < 100)
{
fanSpeed = 100;
}
else
{
fanSpeed = 100; // Если температура 30°C и выше, устанавливаем максимальную скорость
}
// Управление скоростью вентилятора
analogWrite(fanPin, fanSpeed);
// Вывод данных на монитор последовательного порта (можно закомментировать после отладки)
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.print("°C. Fan speed: ");
Serial.print(fanSpeed);
Serial.println("%");
// Пауза перед следующим чтением
delay(1000); // Можно настроить нужный интервал времени
}