4. Teema Temperatuuri andur, Servo mootor
4.1 Katse Temperatuuri andur

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.
}
4.2. Katse Servo kasutamine


// 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
}
}
Ülesanne 4 Temperatuuritundlik servolülitus(Kasvuhoone temperatuuri reguleegimine)
Töö kirjeldus
See projekt mõõdab temperatuuri ja liigutab servomootorit, kui temperatuur on teatud vahemikus. Näiteks, kui kasvuhoones on õige temperatuur, siis mootor avab või sulgeb mingi luugi.
Kasutatud komponenid
Arduino UNO plaat (1tk)
Arendusplaat (1tk)
LED (1tk)
15 traati
2 takisti
photoresistor (1tk)
Micro Servo (1tk)
temperatuuriandur (1tk)
Töö protsess:
- Ühendame kõik komponendid breadboard’ile ja Arduino külge.
- Fototakisti mõõdab valgust ja LED süttib vastavalt sellele.
- Temperatuuriandur mõõdab temperatuuri.
- Kui temperatuur on 18–25 kraadi vahel, siis servo liigub (nt avab akna).
- Kui temperatuur on liiga madal või kõrge, siis servo liigub tagasi.
Kasutamisvõimalused tavaelus
- Kasvuhoone automaatne tuulutamine
- Nutikas ventilatsioon
- Temperatuuritundlikud mehhanismid (näiteks kliimaseadmed või luugid)
Skeem:

Programm:
#include <Servo.h> // Lisame servo juhtimiseks vajaliku teegi
const int led = 12; // LED on ühendatud pin 12
const int sensorPin = A1; // Fototakisti on pin A1
int lightLevel, high = 0, low = 1023; // Muutujad valguse taseme jaoks
const int temperaturePin = A0; // Temperatuuriandur on pin A0
Servo servo1; // Loome servo objekti
void setup() {
pinMode(led, OUTPUT); // Määrame, et LED pin on väljund
servo1.attach(13); // Ühendame servomootori pin 13 külge
Serial.begin(9600); // Alustame serial monitori
}
void loop() {
lightLevel = analogRead(sensorPin); // Loeme valguse taseme
analogWrite(led, lightLevel); // LED süttib vastavalt valgusele
float voltage, degreesC, degreesF;
voltage = getVoltage(temperaturePin); // Saame anduri pingetaseme
degreesC = (voltage - 0.5) * 100.0; // Arvutame Celsiuse kraadid
degreesF = degreesC * (9.0 / 5.0) + 32.0; // Arvutame Fahrenheiti kraadid
// Näitame andmeid serial monitoril
Serial.print("Voltage: ");
Serial.print(voltage);
Serial.print(" deg C: ");
Serial.print(degreesC);
Serial.print(" deg F: ");
Serial.println(degreesF);
// Kui temperatuur on 18–25°C, siis servo liigub
if (degreesC <= 25 && degreesC >= 18) {
servo1.write(180); // Servo pöördub
delay(1000); // Ootame 1 sek
} else {
servo1.write(0); // Servo tagasi algasendisse
delay(1000);
}
delay(2000); // Väike paus enne järgmist tsüklit
}
// Funktsioon pinge arvutamiseks (A0 pinilt)
float getVoltage(int pin) {
return (analogRead(pin) * 0.004882814);
}