Temperatuuri andur
Skeem:

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 10kom takisti
- 3 x 220om takisti
- 3 x LED (sinine)
- Juhtmed
- Temperatuuriandur
Töö protsess:
Temperatuuriandur loeb temperatuuri ja juhib servomootori asendit.
Kui temperatuur on madal (<25), liigub servo 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.
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);
}