Temperatuuri andur, Servo mootor
Katse 4.1 – Temperatuuri andur
Используемые компоненты:
- Arudiono Uno 1 шт
- Плата 1 шт
- Температурный датчик 1 шт
- Провода 4 шт
Схема соединения:

Код:
const int temperaturePin = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
float voltage, degreesC, degreesF;
// kasutame analogRead(), mis tagastab sisendi väärtused vahemikul 0 ... 1023.
// koostasime getVoltage() funktsioon, mis tagastab pingeväärtus 0 ... 5,
voltage = getVoltage(temperaturePin);
degreesC = (voltage - 0.5) * 100.0;
// degreesC = voltage * 100.0;
degreesF = degreesC * (9.0/5.0) + 32.0;
Serial.print("voltage: ");
Serial.print(voltage);
Serial.print(" deg C: ");
Serial.print(degreesC);
Serial.print(" deg F: ");
Serial.println(degreesF);
//Ekraanil ilmub järgmine tekst: "voltage: 0.73 deg C: 22.75 deg F: 72.96"
delay(1000); // ootame 1 sek
}
float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814);
// teisendame pinge vahemikust 0,0 ... 5,0 V, vahemikku 0 до 1023.
}
Пояснение кода:
Цель программы: Измерить температуру с аналогового температурного датчика, подключенного к пину, и вывести значения температуры в Цельсиях и Фаренгейтах в Serial Monitor.
- Считываем аналоговый сигнал с датчика температуры.
- Переводим его в вольты.
- Преобразуем в градусы Цельсия (и Фаренгейта для друзей из Техаса).
- Выводим в Serial Monitor.
- Повторяем это каждую секунду.
- const int temperaturePin = 0; – Объявляем константу — номер аналогового пина, к которому подключён температурный датчик.
- Serial.begin(9600); – Открываем серийное соединение со скоростью 9600 бод.
voltage = getVoltage(temperaturePin);
– Вызываем нашу самописную функциюgetVoltage()
для считывания напряжения с датчика.- degreesC = (voltage – 0.5) * 100.0; – Переводим напряжение в температуру.
- Предполагаем, что 0.5 В — это 0°C.
- degreesF = degreesC * (9.0/5.0) + 32.0; – Переводим температуру в градусы Фаренгейта
- delay(1000); – Пауза в 1000 миллисекунд (1 секунда)
Katse 4.2. – Servo kasutamine
Используемые компоненты:
- Arudiono Uno 1 шт
- Сервопривод 1 шт
- Провода 4 шт
Схема соединения:
Код:
// Paljud saadaolevad teegid (library’d) on leitavad aadressilt http://arduino.cc/en/Reference/Libraries
#include <Servo.h> // teavitame Arduino IDE-d, et kasutame mootorite juhtimiseks mõeldud Servo.h teeki
// Kui teek on lisatud, saame kohe kasutada selle funktsioone.
// Servo teegi funktsioonide nimekirja leiad: http://arduino.cc/en/Reference/Servo
// Enamik teeke on kättesaadavad menüüst "File / Examples".
Servo mootor; // Loome objekti nimega "mootor", millega juhime pöördemootorit (servomootorit)
void setup()
{
// Seome mootori juhtimise digitaalse pinni 9 külge.
// Kui kasutad rohkem kui ühte mootorit, peab iga uus mootor olema seotud eraldi digitaalse pordiga.
mootor.attach(9); // Ühendame mootori juhtimise digitaalpordi 9 külge. See peab olema PWM-toega väljund.
}
void loop()
{
int asend;
mootor.write(90); // Pöörame mootori asendisse 90 kraadi
delay(1000);
mootor.write(180); // Pöörame mootori 180 kraadi
delay(1000);
mootor.write(0); // Pöörame mootori tagasi 0 kraadi
delay(1000);
// Mootori pööramine aeglaselt päripäeva (0 → 180 kraadi)
for(asend = 0; asend < 180; asend += 2)
{
mootor.write(asend); // Muudame mootori asendit
delay(20); // Lühike paus sujuvaks liikumiseks
}
// Mootori pööramine aeglaselt vastupäeva (180 → 0 kraadi)
for(asend = 180; asend >= 0; asend -= 1)
{
mootor.write(asend); // Muudame mootori asendit
delay(20); // Lühike paus sujuvaks liikumiseks
}
}
Пояснение кода:
Этот код управляет сервомотором (то есть маленьким моторчиком, который может точно поворачиваться на заданный угол от 0 до 180 градусов). Используется библиотека Servo.h
!
- Используется библиотека Servo.h для лёгкого управления моторами.
- Сервомотор подключается к цифровому пину 9.
- Код демонстрирует как резкие, так и плавные повороты сервомотора.
- #include <Servo.h> – Подключаем библиотеку Servo
- Servo mootor; – Создаём объект
mootor
. Это как пульт дистанционного управления, только для мотора. - mootor.attach(9); – Подключаем мотор к цифровому пину 9.
Ülesanne 4 – Temperatuuritundlik servolülitus(Kasvuhoone temperatuuri reguleegimine)
Описание работы:
- Управление сервомотором на основе температуры:
Если температура 20 °C или ниже, сервомотор перемещается в положение 0° (например, окно теплицы закрывается). Если температура 30 °C или выше, сервоперемещается в положение 180° (окно открывается для охлаждения).
Движение сервомотора должно быть плавным, а не скачкообразным (используется движение с небольшими шагами). - Автоматическое освещение с фотореле:
Если окружающее освещение слабое (темно), светодиод включается автоматически. Если освещения достаточно, светодиод выключается.
Используемые компоненты:
- Arudiono Uno 1tk
- Плата 1 шт
- Светодиод 5 шт
- Транзистор 220 Om 1шт
- Транзистор 10 kOm 1шт
- Провода 12 шт
- Фоторезистор 1 шт
- Сервомотор 1 шт
- Термодатчик 1 шт
Схема соединения:

Код:
#include <Servo.h> // teavitame Arduino IDE-d, et kasutame mootorite juhtimiseks mõeldud Servo.h teeki
Servo mootor; // Loome objekti nimega "mootor", millega juhime servomootorit
// Määrame andurite ja seadmete ühendused
const int tempPin = A0; // TMP36 temperatuuriandur on ühendatud analoogsisendiga A0
const int lightPin = A1; // Fototakisti on ühendatud analoogsisendiga A1
const int ledPin = 13; // LED on ühendatud digitaalpordiga 7
void setup()
{
Serial.begin(9600); // Alustame sarjaväljastust temperatuuri ja valguse taseme kuvamiseks
mootor.attach(9); // Ühendame mootori juhtimise digitaalpordi 9 külge
pinMode(ledPin, OUTPUT); // Määrame LED-i väljundiks
}
void loop()
{
// --- Temperatuuri lugemine ---
int tempRaw = analogRead(tempPin); // Loeme toorväärtuse TMP36 andurilt
float voltage = tempRaw * 5.0 / 1023.0; // Teisendame pinge väärtuseks
float temperatureC = (voltage - 0.5) * 100.0; // Teisendame kraadideks Celsiuse järgi
Serial.print("Temperatuur: ");
Serial.print(temperatureC);
Serial.println(" C");
// --- Mootori liigutamine sõltuvalt temperatuurist ---
if (temperatureC <= 20) {
liigutaSujuvalt(mootor.read(), 0); // Kui külm — sulgeme akna (0°)
}
else if (temperatureC >= 30) {
liigutaSujuvalt(mootor.read(), 180); // Kui kuum — avame akna (180°)
}
// --- Valgustaseme lugemine ---
int lightLevel = analogRead(lightPin); // Loeme fototakistilt väärtuse
Serial.print("Valgustase: ");
Serial.println(lightLevel);
// --- LED-i juhtimine ---
if (lightLevel < 500) {
digitalWrite(ledPin, HIGH); // Kui valgust on vähe → LED sisse
}
else {
digitalWrite(ledPin, LOW); // Kui valgust piisavalt → LED välja
}
delay(1000); // Väike paus enne uut lugemist
}
// --- Funktsioon mootori sujuvaks liigutamiseks ---
void liigutaSujuvalt(int algus, int siht) {
int samm = (algus < siht) ? 1 : -1; // Määrame liikumise suuna
for (int pos = algus; pos != siht; pos += samm) {
mootor.write(pos); // Liigutame mootorit väikeste sammudega
delay(15); // Väike viivitus sujuvaks liikumiseks
}
}
Процесс работы:
Проект имитирует работу умной системы управления теплом и освещением в теплице:
Устройство реагирует на температуру воздуха и уровень освещения в помещении. Оно управляет:
- Сервомотором (например, для открытия/закрытия окна в теплице)
- LED-индикатором (освещение в тёмное время)
Температурный контроль окна (через сервомотор)
- Температура считывается с аналогового температурного датчика.
- Далее значение переводится в градусы Цельсия.
- Если температура ≤ 20°C – считается, что в теплице прохладно:
- Сервомотор плавно переводится в положение
0°
, т.е. окно закрывается.
- Сервомотор плавно переводится в положение
- Если температура ≥ 30°C – слишком жарко:
- Сервомотор плавно переводится в положение
180°
, т.е. окно полностью открывается для проветривания.
- Сервомотор плавно переводится в положение
- Сервомотор не дёргается резко, а движется плавно — по одному градусу с задержкой
15 мс
между шагами
Автоматическое освещение (LED)
- Освещённость измеряется через фоторезистор
- Если значение освещённости < 500 — темно, включается LED
- Если значение ≥ 500 — светло, LED выключается
Вывод данных в Serial Monitor
Каждую секунду:
- Показывается текущая температура в градусах Цельсия.
- Показывается уровень освещённости.
Видео:
Применение термодатчика и сервомотора в разных проектах:
Учебные и хобби-проекты
- Автоматическое окно для теплицы — когда жарко, открывается; когда прохладно — закрывается.
- Терморегулируемая вентиляция — вентиляционная заслонка открывается при перегреве.
- Мини-печь на Arduino — следит за температурой и автоматически открывает дверцу.
- DIY-переключатель для вентилятора — мотор включает/отключает поток воздуха по температуре.
- Смарт-будильник с реакцией на температуру — окно приоткрывается, если слишком душно.
Умный дом
- Термоуправляемые жалюзи — открываются днём при перегреве комнаты.
- Безопасный душ — если температура воды > 45°C, сервомотор перекрывает поток.
- Автоматическая форточка в ванной — проветривает помещение при высоком уровне пара или тепла.
- Подача тёплого пола — сервопривод регулирует кран подачи воды.
Автомобильные проекты
- Контроль перегрева двигателя — при достижении опасной температуры сервомотор открывает капот или активирует охлаждение.
- Автоматический люк — открытие при перегреве салона.
- Температурная вентиляция в багажнике — особенно полезна для перевозки животных или продуктов.
Робототехника и мехатроника
- Робот, реагирующий на температуру поверхности — например, не наступает на горячее.
- Пожарный робот — определяет очаг и открывает заслонку для тушения.
- Эмоции робота — при перегреве опускает “голову” или “потеет” (движение через сервомотор).
Арт и инсталляции
- Инсталляция “Дышащая скульптура” — реагирует на тепло людей и «открывается».
- Кинетическое искусство — сервомоторы двигают элементы конструкции в зависимости от температуры.
- Тепловые портреты — термодатчик управляет положением световых фильтров.
Научные и лабораторные приборы
- Инкубатор — поддерживает заданную температуру, открывая или закрывая заслонки.
- Камера для химических реакций — управляет вентиляцией по перегреву.
- Калибровка оборудования — измерение точной температуры с возможностью регулировки положения сенсора.