4.1 Katse Temperatuuri andur
Ühendus TÄHTIS!

Kood
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.
}
Skeem

Ülesanne 4 Temperatuuritundlik servolülitus(Kasvuhoone temperatuuri reguleegimine)
Komponendid / Компоненты:
Toiteallikas (USB või patarei) – источник питания (USB или батарейка)
Arduino Uno – Arduino Uno
TMP36 temperatuurisensor – температурный датчик TMP36
Valgustundlik takisti (LDR) – фоторезистор (LDR)
10 kΩ takisti – резистор 10 кОм (для LDR)
220 Ω takisti – резистор 220 Ом (для LED)
Servo mootor SG90 – сервомотор SG90
LED diood – светодиод
Juhtmed (jumpperid) – соединительные провода (джамперы)
Skeem

Kood
#include <Servo.h>
Servo servoMotor;
const int tempPin = A1; // TMP36 andur
const int ldrPin = A0; // Fototakisti
const int ledPin = 11; // LED
const int servoPin = 9; // Servomootor
int currentAngle = 0;
bool increasing = true;
void setup() {
pinMode(ledPin, OUTPUT);
servoMotor.attach(servoPin);
servoMotor.write(currentAngle);
Serial.begin(9600);
}
void loop() {
// --- Temperatuur ---
int sensorValue = analogRead(tempPin);
float voltage = sensorValue * (5.0 / 1023.0);
float temperatureC = (voltage - 0.5) * 100;
if (temperatureC >= 26) {
// Ukse avamine ja sulgemine tsükliliselt
if (increasing) {
currentAngle++;
if (currentAngle >= 160) {
currentAngle = 160;
increasing = false;
}
} else {
currentAngle--;
if (currentAngle <= 0) {
currentAngle = 0;
increasing = true;
}
}
servoMotor.write(currentAngle);
delay(10);
} else {
// Ukse sulgemine, kui temperatuur alla 26
if (currentAngle > 0) {
currentAngle--;
servoMotor.write(currentAngle);
delay(10);
}
}
// --- Valguse tase (fototakisti) ---
int lightLevel = analogRead(ldrPin);
if (lightLevel < 500) {
digitalWrite(ledPin, HIGH); // Pime – LED sisse
} else {
digitalWrite(ledPin, LOW); // Valge – LED välja
}
// Debug
Serial.print("Temp: ");
Serial.print(temperatureC);
Serial.print(" C, Light: ");
Serial.println(lightLevel);
}
See Arduino kood kasutab temperatuuriandurit ja fototakistit, et juhtida servomootorit ja LED-i:
- Kui temperatuur on 26 °C või rohkem, siis uks (servomootor) liigub edasi-tagasi automaatselt.
- Kui temperatuur on alla 26 °C, siis uks sulgub aeglaselt.
- Kui on pime (valgus < 500), siis LED süttib; kui on valge, siis kustub.
- Seriaalmonitoris kuvatakse temperatuuri ja valguse tase.
Этот код на Arduino использует датчик температуры и фоторезистор для управления сервомотором и светодиодом:
- Если температура 26 °C или выше, дверь (сервомотор) открывается и закрывается циклично.
- Если температура ниже 26 °C, дверь плавно закрывается.
- Если темно (уровень света < 500), светодиод включается; если светло — выключается.
- В монитор порта выводятся данные о температуре и уровне освещенности.
Video
