Posted in

Katse 4 temperatuur

Näidis 1:

Katse 4

see on temperatuurianduri test. Siin pildil on näide, kuidas ühendada juhtmed temperatuurianduriga.
See on saanud võimaluse näidata, milline on temperatuur.

kood:

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.
}

Näidis 2:

Selles osas on servomootor. Servomootor on pöörlev või lineaarne ajam, mis võimaldab mehaanilises süsteemis nurk- või lineaarpositsiooni, kiiruse ja kiirenduse täpset juhtimist. See moodustab servomehhanismi osa ja koosneb sobivast mootorist, mis on ühendatud asendi tagasiside anduriga ja kontrolleriga. temperatuur

kood:

#include  <Servo.h> // nii teavitame Arduino IDE-t vajadusest kasutada Servo.h teeki (подключаем дополнительную библиотеку)
// Как только вы "подключаете" библиотеку, так сразу получаете доступ к этим функциям. Вы можете найти список функций в библиотеке
// сервопривода в: http://arduino.cc/en/Reference/Servo. Большинство библиотек доступно из меню "Файл / примеры".

Servo servo1; // Peame looma servo objekti nimega servo1 (объект управления сервоприводом)

void setup()
{
// Сейчас мы прикрепим (attach) объект servo1 к цифровому пину 9. Если вы собираетесь управлять более чем одним
// сервоприводом, Вы должны прикрепить каждый новый объект серво к своему, отдельному порту, причем это порт должен быть цифровым.
servo1.attach(9); //ütleme Arduinole, et infosuhtlus servo-objektiga servo käib läbi klemmi number 9. Tegu on digitaal-klemmiga--PWM digitaalne osa! Kontrollime, kas skeemil kasutame sama klemmi.
}
void loop()
{
int position;

servo1.write(90); //pööramise nurk =90
delay(1000); 
servo1.write(180); //pööramise nurk =180
delay(1000);
servo1.write(0); //pööramise nurk =0
delay(1000);

// servo positsiooni muutmine väike kiirusega pärisuunas:
for(position = 0; position < 180; position += 2)
{
servo1.write(position); // positsiooni muutmine
delay(20); 
}

// servo positsiooni muutmine väike kiirusega vastupäeva:
for(position = 180; position >= 0; position -= 1)
{ 
servo1.write(position); // positsiooni muutmine
delay(20); 
}
}

KATSE 4:

Töö kirjeldus:

Öövalgustuse loomine: lülitub sisse, kui on pime, lülitub välja, kui on valgus

Kasutatud komponendid:

Arduino Uno R3,

Positional Micro Servo,

White LED 3 tükki,

220 Ω Resistor 3 tükki,

Photoresistor,

10 kΩ Resistor

Töö protsess:

mulle ja mu sõbrale Maksimile tehti ülesandeks teha „nutikas aed“ (ma ei osanud seda lihtsamalt nimetada). Seal on süsteem, mis avab akna, kui ruumis on liiga kuum (me lihtsalt panime käe soojusandurile) ja kui on liiga pime, siis töötavad tuled.

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) {
    currentAngle += 3; // bigger step
    if (currentAngle > targetAngle) currentAngle = targetAngle;
  } else if (currentAngle > targetAngle) {
    currentAngle -= 3;
    if (currentAngle < targetAngle) currentAngle = targetAngle;
  }
  servo.write(currentAngle);
  delay(20); // sujuv liikumine

  // --- 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

Lisa kommentaar

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga