Posted in

Teema 4

Содержание страницы

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 servo­mootorit, 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 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.

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 servo objekti.
servo.attach(pin) — Seob servomootori määratud piniga
#include <Servo.h> — Lisab servo raamatukogu.
servo.write(angle); — Liigutab servo määratud nurka (0–180°).
float — koma numbrid

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *