IOT ENTERPRISE ©
#include <OneWire.h>
#include <DallasTemperature.h>
// Пины подключения
#define BUZZER_PIN 3 // Пин зумера (PWM)
#define ONE_WIRE_BUS 2 // Пин датчика DS18B20
// Настройка температурных границ
#define MIN_TEMP 18.0 // Минимальная температура
#define MAX_TEMP 25.0 // Максимальная температура
// Настройка OneWire и DallasTemperature
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Переменная для хранения температуры
float temperature = 0;
void setup() {
Serial.begin(9600);
// Инициализация пинов
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW); // Выключаем зумер
// Инициализация датчика температуры
sensors.begin();
Serial.println("Система контроля температуры запущена");
Serial.println("Диапазон: 18°C - 25°C");
}
void loop() {
// Запрос температуры
sensors.requestTemperatures();
temperature = sensors.getTempCByIndex(0); // Получаем температуру с первого датчика
// Вывод температуры в Serial Monitor
Serial.print("Температура: ");
Serial.print(temperature);
Serial.println(" °C");
// Проверка температурного диапазона и звуковая индикация
if (temperature < MIN_TEMP) {
// Температура ниже минимальной
Serial.println("СЛИШКОМ ХОЛОДНО!");
playLowTempAlarm();
}
else if (temperature > MAX_TEMP) {
// Температура выше максимальной
Serial.println("СЛИШКОМ ЖАРКО!");
playHighTempAlarm();
}
else {
// Температура в норме
Serial.println("НОРМА");
playNormalBeep();
}
delay(2000); // Пауза между измерениями (2 секунды)
}
// Звуковая индикация для низкой температуры
void playLowTempAlarm() {
// Прерывистый низкий звук (холодно)
for (int i = 0; i < 3; i++) {
tone(BUZZER_PIN, 200, 300); // Низкая частота (200 Гц)
delay(500);
}
noTone(BUZZER_PIN);
}
// Звуковая индикация для высокой температуры
void playHighTempAlarm() {
// Прерывистый высокий звук (жарко)
for (int i = 0; i < 3; i++) {
tone(BUZZER_PIN, 800, 300); // Высокая частота (800 Гц)
delay(500);
}
noTone(BUZZER_PIN);
}
// Звуковая индикация для нормальной температуры
void playNormalBeep() {
// Короткий одинарный звук (все в порядке)
tone(BUZZER_PIN, 500, 100); // Средняя частота (500 Гц)
delay(150);
noTone(BUZZER_PIN);
}
// Дополнительная функция для плавного изменения звука
void playTemperatureTone() {
// Генерируем тон, частота которого зависит от температуры
int frequency = map(constrain(temperature, MIN_TEMP, MAX_TEMP),
MIN_TEMP, MAX_TEMP, 200, 800);
tone(BUZZER_PIN, frequency, 1000);
delay(1100);
noTone(BUZZER_PIN);
}
Температурный диапазон: 18°C - 25°C (можно изменить в MIN_TEMP
и MAX_TEMP
)
Звуковая индикация:
Ниже 18°C: 3 низких сигнала (200 Гц) - "холодно"
Выше 25°C: 3 высоких сигнала (800 Гц) - "жарко"
В диапазоне: 1 короткий сигнал (500 Гц) - "норма"
Вывод в Serial Monitor: Температура и статус выводятся каждые 2 секунды
playTemperatureTone()
- генерация тона, частота которого зависит от температуры (чем выше температура - тем выше тон)
Измените пины подключения в #define
секции если нужно
Настройте температурные границы:
#define MIN_TEMP 18.0 // Минимальная температура
#define MAX_TEMP 25.0 // Максимальная температура
Настройте частоты звука в функциях playLowTempAlarm()
, playHighTempAlarm()
, playNormalBeep()
Система контроля температуры запущена
Диапазон: 18°C - 25°C
Температура: 22.5 °C
НОРМА
Температура: 17.8 °C
СЛИШКОМ ХОЛОДНО!
Температура: 26.2 °C
СЛИШКОМ ЖАРКО!