Katse 4

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 &lt;Servo.h&gt;

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 &lt;= 25) {
    targetAngle = 0;
  } else {
    targetAngle = 180;
  }

  // --- Servo liigutamine sujuvalt ---
  if (currentAngle != targetAngle) {
    if (currentAngle &lt; targetAngle) {
      currentAngle += 3;
      if (currentAngle &gt; targetAngle) currentAngle = targetAngle;
    } else if (currentAngle &gt; targetAngle) {
      currentAngle -= 3;
      if (currentAngle &lt; targetAngle) currentAngle = targetAngle;
    }
    servo.write(currentAngle);
    delay(5);
}
  // --- Valgustaseme lugemine ja LEDi juhtimine ---
  int lightLevel = analogRead(ldrPin);
  if (lightLevel &gt; 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);
}

Leave a Reply

Your email address will not be published.