Praktika 4. Tempetatuuri andur ja Servo mootor
Katse 4.1 “Temperatuuri andur”
Komponendid:
Juhe — 4
Arendusplaat — 1
Emaplaat — 1
Temperatuuti andur — 1
Skeem:

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.
}
Katse 4.2 “Servo kasutamine”
Komponendid:
Servo Kasutamine — 1
Juhe — 8
Emaplaat — 1
Arendusplaat — 1
Skeem:

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.3 “Automatiseeritud Kasvuhoone”
Töö Kirjeldus:
Kasvuhoone automaatsete uste ja sisse lülituva sisemise valgustusega.
Töö Protsess:
Kasvuhoone uksed avanevad automaatselt, kui siseruumide temperatuur jõuab 30 kraadini, ja sulguvad, kui temperatuur langeb 20 kraadini. Lamp lülitub automaatselt sisse, kui muutub pimedaks, ja välja, kui valgust on piisavalt.
Komponendid:
Photoresistor — 1
Emaplaat — 1
LED — 1
Taikisti — 1 (220 Om)
Taikisti — 1 (10K Om)
Juhe — 12
Arendusplaat — 1
Servo Kasutamine — 1
Temperatuuti andur — 1
Ühendamise Skeem:

Programm:
#include <Servo.h>
const int tempPin = A0;
const int ldrPin = A1;
const int ledPin = 2;
const int servoPin = 13;
Servo servo;
int currentAngle = 0;
int targetAngle = 0;
void setup() {
pinMode(ledPin, OUTPUT);
servo.attach(servoPin);
servo.write(currentAngle);
Serial.begin(9600);
}
void loop() {
int tempReading = analogRead(tempPin);
float voltage = tempReading * (5.0 / 1023.0);
float temperature = (voltage - 0.5) * 100;
if (temperature <= 20) {
targetAngle = 0;
} else if (temperature >= 30) {
targetAngle = 130;
} else {
targetAngle = currentAngle;
}
if (currentAngle != targetAngle) {
servo.attach(servoPin);
if (currentAngle < targetAngle) {
currentAngle++;
servo.write(currentAngle);
delay(15);
} else if (currentAngle > targetAngle) {
currentAngle--;
servo.write(currentAngle);
delay(15);
}
if (currentAngle == targetAngle) {
delay(100);
servo.detach();
}
}
int lightLevel = analogRead(ldrPin);
if (lightLevel > 500) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
Serial.print("Temp: ");
Serial.print(temperature);
Serial.print("C, Angle: ");
Serial.print(currentAngle);
Serial.print(", Light: ");
Serial.println(lightLevel);
delay(100);
}
Video:
https://drive.google.com/file/d/1_Gs7dZy6d4K37XtIFPm3p70d8IlXjQxz/view?usp=sharing
Uued Funktsioonid:
include <Servo.h> – Servo mootorite raamatu teekide kasutamine
servo.attach – Kasutatakse servo mootori kinnitamiseks konkreetsele pinnile Arduino plaadil.

