Temperatuuri andur
Skeem:

Komponendid:
- Arduino Uno
- Andur TMP36
- 6x Juhtmed
Tööpõhimõte:
Programm loeb temperatuurisensori väärtuse A0 pinnilt, teisendab selle pingeks ja arvutab saadud pinge põhjal temperatuuri kraadides. Temperatuur kuvatakse nii Celsiuse kui Fahrenheiti järgi seerianäidikus iga sekund.
TMP ühendamine!

Servo mootor
Skeem:

Komponendid:
- Arduino Uno
- Servo mootor
- 5x Juhtmed
Tööpõhimõte:
Programm juhib servomootorit, mis on ühendatud digitaalpordiga 9. Alguses liigutatakse servo kindlatesse asenditesse: 90°, 180°, 0°. Seejärel servo liigub sujuvalt 0° kuni 180° ja tagasi 0°, muutes asendit sammhaaval koos väikese viivitusega.
Ülesanne
Töö kirjeldus:
Projekt kasutab Arduino Uno mikrokontrollerit temperatuuri ja valguse põhjal automaatseks toimingute juhtimiseks. Temperatuuriandur juhib servomootori asendit ja fototakisti lülitab LEDi sisse või välja, olenevalt valgustasemest.
Kasutatud komponendid:
- Arduino Uno
- Servo mootor
- Fotoristor
- Arendusplaat
- 1 x 10kΩ takisti
- 3 x 220Ω takisti
- 3 x LED (sinine)
- Juhtmed
- Temperatuuriandur
Töö protsess:
Temperatuuriandur loeb temperatuuri ja juhib servomootori asendit.
Kui temperatuur on madal (<25), liigub 0° ja kui kõrge (>25), siis 180°.
Fototakisti mõõdab valgust ja lülitab LEDi sisse või välja.
Kõik toimingud on sujuvad ja kuvatakse Serial Monitoris.
Skeem:

Kood:
#include <Servo.h>
const int tempPin = A0; // Temperatuuriandur (LM35, TMP36 jne)
const int ldrPin = A1; // Fototakisti (LDR)
const int ledPin = 10; // LEDi digitaalne väljund
const int servoPin = 9; // Servo mootor SG90
Servo servo;
int currentAngle = 0;
void setup() {
servo.attach(servoPin);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// --- Temperatuuri lugemine ja teisendamine kraadideks ---
int tempValue = analogRead(tempPin);
float voltage = tempValue * (5.0 / 1023.0);
float temperature = (voltage - 0.5) * 100.0; // TMP36 puhul
// --- Servonurga määramine temperatuuri põhjal ---
int targetAngle;
if (temperature <= 25) {
targetAngle = 0;
} else {
targetAngle = 180;
}
// --- Servo liigutamine sujuvalt ---
if (currentAngle != targetAngle) {
if (currentAngle < targetAngle) {
currentAngle += 3;
if (currentAngle > targetAngle) currentAngle = targetAngle;
} else if (currentAngle > targetAngle) {
currentAngle -= 3;
if (currentAngle < targetAngle) currentAngle = targetAngle;
}
servo.write(currentAngle);
delay(5);
}
// --- Valgustaseme lugemine ja LEDi juhtimine ---
int lightLevel = analogRead(ldrPin);
if (lightLevel > 500) {
digitalWrite(ledPin, HIGH); // LED süttib, kui on pime
} else {
digitalWrite(ledPin, LOW); // LED kustub, kui valgust piisavalt
}
// --- Andmete näitamine Serial Monitoris ---
Serial.print("Temp: ");
Serial.print(temperature);
Serial.print(" C, Light: ");
Serial.print(lightLevel);
Serial.print(", Servo angle: ");
Serial.println(currentAngle);
}
Video:
Uued funktsioonid:
Servo servo – Loob objekti.servo.attach(pin) – Seob servomootori määratud piniga#include <Servo.h> – Lisab raamatukogu.servo.write(angle); – Liigutab määratud nurka (0–180°).float – koma numbrid