Требуемые компоненты:
Температурный сенсор

Код
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.
}// С#
Программа каждую секунду считывает с аналогового входа значение от датчика, преобразует его в напряжение через функцию getVoltage(). Затем, с помощью формулы, вычисляется температура в градусах Цельсия и пересчитывается в Фаренгейты. Значение напряжения и температуры выводятся на монитор.
Кнопки
Используемые компонент:
9V Батарейка
Переключатель
LED лампа

Рис 2. Выключатель
int swPin = 4;
int ledPin = 10;
int switchstate = 0;
void setup()
{
pinMode(swPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop()
{
switchstate=digitalRead(swPin);
if (switchstate==HIGH)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}
Подключенный к 4 слоту выключатель управляет LED лампой, путем переключения свича. По умолчанию лампа включена. Была добавлена батарейка для автономной работы системы, питание от сети не требуется по итогу.
Сервопривод
Используемые компоненты:
Сервопривод

Рис.3 Сервопривод
#include <Servo.h> // teavitame Arduino IDE-d, et kasutame mootorite juhtimiseks mõeldud Servo.h teeki
Servo mootor; // Loome objekti nimega "mootor", millega juhime pöördemootorit (servomootorit)
void setup()
{
// Seome mootori juhtimise digitaalse pinni 11 külge.
// Kui kasutad rohkem kui ühte mootorit, peab iga uus mootor olema seotud eraldi digitaalse pordiga.
mootor.attach(11); // Ühendame mootori juhtimise digitaalpordi 11 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
}
}
Мы первый раз используем библиотеку и это «#include Servo.h», что является самим сервоприводом. Без него не получится работоспособный системы.
В setup() мы создаём объект mootor класса Servo и прикрепляем его к выходу 11, чтобы управлять положением сервопривода.
В loop() сначала по очереди устанавливаем жёсткие позиции 90°, 180° и 0° с паузами по 1 с между ними.
Затем плавно проводим «сканирование»: в цикле шагами по 2° сервопривод медленно разворачивается от 0° до 180°, после чего в другом цикле возвращается обратно шагами по 1°.
Парник
Используемые компоненты:
Температурный датчик
Резисторы:
1. 220 Ω
2. 10k Ω
LED лампа
Фоторезистор
Сервоприво

Рис 4. Конечная работа
Итоговый вариант
#include <Servo.h>
// --- Пины ---
const int temperaturePin = A0; // TMP36 — температура
const int LDRPin = A1; // Фоторезистор (LDR)
const int ledPin = 6; // Светодиод (одиночный)
const int servoPin = 10; // Сервомотор
Servo mootor;
int currentAngle = 0;
void setup() {
Serial.begin(9600);
mootor.attach(servoPin);
pinMode(ledPin, OUTPUT);
}
void loop() {
// Temp
float voltage = getVoltage(temperaturePin);
float degreesC = (voltage - 0.5) * 100.0;
Serial.print("Temp: ");
Serial.println(degreesC);
// --- Управление сервомотором ---
int targetAngle;
if (degreesC <= 20) {
targetAngle = 0;
} else if (degreesC >= 30) {
targetAngle = 180;
} else {
targetAngle = map((int)degreesC, 21, 29, 0, 180);
}
targetAngle = constrain(targetAngle, 0, 180);
if (currentAngle < targetAngle) {
currentAngle++;
} else if (currentAngle > targetAngle) {
currentAngle--;
}
mootor.write(currentAngle);
delay(300); // Плавность движения
// --- Уровень освещённости (простая логика) ---
int lightLevel = analogRead(LDRPin);
if (lightLevel < 250) {
digitalWrite(ledPin, LOW); // Включить лампу
} else {
digitalWrite(ledPin, HIGH); // Выключить лампу
}
// --- Отладка ---
Serial.print(" | LDR: ");
Serial.print(lightLevel);
Serial.print(" | LED: ");
Serial.println((lightLevel < 250) ? "ON" : "OFF");
delay(400); // Задержка между циклами
}
float getVoltage(int pin) {
return analogRead(pin) * 0.004882814; // 5.0 / 1024
}
Потенциометр и термодатчик
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.
}// С#
Программа каждую секунду считывает с аналогового входа значение от датчика, преобразует его в напряжение через функцию getVoltage(). Затем, с помощью формулы, вычисляется температура в градусах Цельсия и пересчитывается в Фаренгейты. Значение напряжения и температуры выводятся на монитор.
Кнопки
Используемые компонент:9V Батарейка
Переключатель
LED лампа

int swPin = 4;
int ledPin = 10;
int switchstate = 0;
void setup()
{
pinMode(swPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop()
{
switchstate=digitalRead(swPin);
if (switchstate==HIGH)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}
Подключенный к 4 слоту выключатель управляет LED лампой, путем переключения свича. По умолчанию лампа включена. Была добавлена батарейка для автономной работы системы, питание от сети не требуется по итогу.
Сервопривод
Используемые компоненты:Сервопривод

#include <Servo.h> // teavitame Arduino IDE-d, et kasutame mootorite juhtimiseks mõeldud Servo.h teeki
Servo mootor; // Loome objekti nimega "mootor", millega juhime pöördemootorit (servomootorit)
void setup()
{
// Seome mootori juhtimise digitaalse pinni 11 külge.
// Kui kasutad rohkem kui ühte mootorit, peab iga uus mootor olema seotud eraldi digitaalse pordiga.
mootor.attach(11); // Ühendame mootori juhtimise digitaalpordi 11 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
}
}
Мы первый раз используем библиотеку и это «#include Servo.h», что является самим сервоприводом. Без него не получится работоспособный системы. В setup() мы создаём объект mootor класса Servo и прикрепляем его к выходу 11, чтобы управлять положением сервопривода.
В loop() сначала по очереди устанавливаем жёсткие позиции 90°, 180° и 0° с паузами по 1 с между ними.
Затем плавно проводим «сканирование»: в цикле шагами по 2° сервопривод медленно разворачивается от 0° до 180°, после чего в другом цикле возвращается обратно шагами по 1°.
Парник
Используемые компоненты:
Температурный датчик
Резисторы:
1. 220 Ω
2. 10k Ω
LED лампа
Фоторезистор
Сервоприво

Рис 4. Конечная работа
Итоговый вариант
#include <Servo.h>
// --- Пины ---
const int temperaturePin = A0; // TMP36 — температура
const int LDRPin = A1; // Фоторезистор (LDR)
const int ledPin = 6; // Светодиод (одиночный)
const int servoPin = 10; // Сервомотор
Servo mootor;
int currentAngle = 0;
void setup() {
Serial.begin(9600);
mootor.attach(servoPin);
pinMode(ledPin, OUTPUT);
}
void loop() {
// Temp
float voltage = getVoltage(temperaturePin);
float degreesC = (voltage - 0.5) * 100.0;
Serial.print("Temp: ");
Serial.println(degreesC);
// --- Управление сервомотором ---
int targetAngle;
if (degreesC <= 20) {
targetAngle = 0;
} else if (degreesC >= 30) {
targetAngle = 180;
} else {
targetAngle = map((int)degreesC, 21, 29, 0, 180);
}
targetAngle = constrain(targetAngle, 0, 180);
if (currentAngle < targetAngle) {
currentAngle++;
} else if (currentAngle > targetAngle) {
currentAngle--;
}
mootor.write(currentAngle);
delay(300); // Плавность движения
// --- Уровень освещённости (простая логика) ---
int lightLevel = analogRead(LDRPin);
if (lightLevel < 250) {
digitalWrite(ledPin, LOW); // Включить лампу
} else {
digitalWrite(ledPin, HIGH); // Выключить лампу
}
// --- Отладка ---
Serial.print(" | LDR: ");
Serial.print(lightLevel);
Serial.print(" | LED: ");
Serial.println((lightLevel < 250) ? "ON" : "OFF");
delay(400); // Задержка между циклами
}
float getVoltage(int pin) {
return analogRead(pin) * 0.004882814; // 5.0 / 1024
}
Потенциометр и термодатчик
Температурный датчик
Резисторы:
2. 10k Ω
LED лампа
Фоторезистор
Сервоприво

#include <Servo.h>
// --- Пины ---
const int temperaturePin = A0; // TMP36 — температура
const int LDRPin = A1; // Фоторезистор (LDR)
const int ledPin = 6; // Светодиод (одиночный)
const int servoPin = 10; // Сервомотор
Servo mootor;
int currentAngle = 0;
void setup() {
Serial.begin(9600);
mootor.attach(servoPin);
pinMode(ledPin, OUTPUT);
}
void loop() {
// Temp
float voltage = getVoltage(temperaturePin);
float degreesC = (voltage - 0.5) * 100.0;
Serial.print("Temp: ");
Serial.println(degreesC);
// --- Управление сервомотором ---
int targetAngle;
if (degreesC <= 20) {
targetAngle = 0;
} else if (degreesC >= 30) {
targetAngle = 180;
} else {
targetAngle = map((int)degreesC, 21, 29, 0, 180);
}
targetAngle = constrain(targetAngle, 0, 180);
if (currentAngle < targetAngle) {
currentAngle++;
} else if (currentAngle > targetAngle) {
currentAngle--;
}
mootor.write(currentAngle);
delay(300); // Плавность движения
// --- Уровень освещённости (простая логика) ---
int lightLevel = analogRead(LDRPin);
if (lightLevel < 250) {
digitalWrite(ledPin, LOW); // Включить лампу
} else {
digitalWrite(ledPin, HIGH); // Выключить лампу
}
// --- Отладка ---
Serial.print(" | LDR: ");
Serial.print(lightLevel);
Serial.print(" | LED: ");
Serial.println((lightLevel < 250) ? "ON" : "OFF");
delay(400); // Задержка между циклами
}
float getVoltage(int pin) {
return analogRead(pin) * 0.004882814; // 5.0 / 1024
}
Потенциометр и термодатчик
Инициализация (setup)
- Запускается сериал-порт для отладки (9600 бод).
- Привязываем сервомотор к пину 10.
- Настраиваем пин 6 как выход для светодиода.
Снятие показаний температуры
- Читаем значение с датчика TMP36 на A0, переводим в напряжение и вычисляем градусы Цельсия по формуле
(voltage–0.5)*100. - Выводим полученную температуру в сериал-монитор.
Плавное управление сервомотором
- В зависимости от
degreesCвыбираем целевой угол:- ≤ 20 °C → 0°
- ≥ 30 °C → 180°
- между 21–29 °C → линейно от 0° до 180°.
- Пошагово (± 1° за итерацию) перемещаем текущее положение (
currentAngle) к целевому и посылаем командуmootor.write()с задержкой 300 мс для плавности.
Контроль освещённости и светодиода
Если уровень света низкий (< 250), включаем светодиод (LOW → с учётом логики вашего модуля), иначе гасим его.
Читаем фоторезистор на A1.