Katse 4.1.

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.
}
const int temperaturePin = 0; - Määrame temperatuuri mõõtmiseks kasutatava pordi numbri (siin on see 0) // Устанавливаем номер пина для считывания температуры
void setup()
{
Serial.begin(9600); – Algatame seriaalporti kiirusel 9600 baiti sekundis // Инициализируем серийный порт на скорости 9600
float voltage, degreesC, degreesF; – Määrame muutujad: pinge (voltage), temperatuur Celsiuses (degreesC) ja Fahrenheitis (degreesF) // Определяем переменные: напряжение (voltage), температура в градусах Цельсия (degreesC) и температура в градусах Фаренгейта (degreesF)
voltage = getVoltage(temperaturePin); – Kutsume funktsiooni getVoltage() ja määrame tulemuse muutujasse voltage // Вызываем функцию getVoltage() и сохраняем результат в переменной voltage
degreesC = (voltage – 0.5) * 100.0; – Arvutame temperatuuri Celsiuses, lähtudes pingest // Рассчитываем температуру в градусах Цельсия на основе напряжения
degreesF = degreesC * (9.0 / 5.0) + 32.0; – Muudame Celsiuse temperatuuri Fahrenheitiks // Преобразуем температуру в градусах Цельсия в температуру в градусах Фаренгейта
delay(1000); – Ootame 1 sekundi (1000 ms) enne järgmist lugemist // Ждем 1 секунду (1000 мс) до следующего считывания
Katse 4.2.

#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);
}
}
Servo servo1; – Peame looma servo objekti nimega servo1 // Создаем объект управления сервоприводом с именем servo1
servo1.attach(9); – servo objektiga kommunikatsioon käib läbi pinni 9. // объект servo1 будет связан с пином 9.
void loop()
{
int position; – Määrame muutujad positsiooni jaoks // Создаем переменную для хранения позиции
servo1.write(90); – Servo pöörleb 90 kraadi // Сервопривод поворачивается на 90 градусов
delay(1000); – Ootame 1 sekundi // Ждем 1 секунду
servo1.write(180); – Servo pöörleb 180 kraadi // Сервопривод поворачивается на 180 градусов
servo1.write(0); – Servo pöörleb 0 kraadi // Сервопривод поворачивается на 0 градусов
for(position = 0; position < 180; position += 2) – Tsükkel, kus servo liikumine toimub 2 kraadi kaupa // Цикл, в котором серво двигается на 2 градуса
for(position = 180; position >= 0; position -= 1) – Tsükkel, kus servo liikumine toimub 1 kraadi kaupa // Цикл, в котором серво двигается на 1 градус
————————————————-Temperatuuritundlik————————————————–
Töö kirjeldus:
Temperatuuritundlik servojuhtimine, mis töötab koos ühe LED-fotoresistori ja temperatuuritakistiga. Servo pöörleb vastupäeva, kui temperatuur on väiksem või võrdne 20, ja kui temperatuur on suurem või võrdne 30, liigub see päripäeva.
Kasutatud komponenid:
Arduino UNO plaat (1tk)
Arendusplaat (1tk)
Juhtmed (12tk)
Takisti (2tk, 220Om ja 10000Om)
LED (1tk: 1 sinine)
PHOTORESISTOR (1tk)
Temperature Sensor (1tk)
Servo (1tk)
Töö protsess:
Temperatuuritundlik servojuhtimine Servo pöörleb vastupäeva, kui temperatuur on väiksem või võrdne 20, ja kui temperatuur on suurem või võrdne 30, liigub see päripäeva. LED töötab, kui fotoresistori valgus paistab ja kui valgust ei ole, on LED välja lülitatud
Skeem:

Programm:
#include <Servo.h>
#include <Servo.h>
Servo servo1;
// Пины
const int tempPin = A1; // TMP36
const int ldrPin = A0; // Fotoresistor
const int ledPin = 11; // LED
const int servoPin = 9; // Servo
Servo windowServo;
int currentAngle = 0; // praegune servo nurk
void setup() {
Serial.begin(9600);
windowServo.attach(servoPin);
pinMode(ledPin, OUTPUT);
}
void loop() {
// ---------- Temperatuur ----------
int tempReading = analogRead(tempPin);
float voltage = tempReading * (5.0 / 1023.0);
float temperatureC = (voltage - 0.5) * 100.0;
// ---------- Servo juhtimine ----------
int targetAngle;
if (temperatureC <= 20) {
targetAngle = 0; // Sulge aken
} else if (temperatureC >= 30) {
targetAngle = 180; // Avage aken
} else {
// Proportsionaalne nurk temperatuuril 0 ja 180 vahel
targetAngle = map(temperatureC, 20, 30, 0, 180);
}
// Sujuv servo liikumine
if (currentAngle < targetAngle) {
currentAngle++;
} else if (currentAngle > targetAngle) {
currentAngle--;
}
windowServo.write(currentAngle);
delay(15); // servo kiirus
// ---------- Valgustus ----------
int ldrValue = analogRead(ldrPin);
int lightThreshold = 500; // pimeduse lävi
if (ldrValue < lightThreshold) {
digitalWrite(ledPin, HIGH); // On pime - lülitage tuled välja
} else {
digitalWrite(ledPin, LOW); // Valgus - lülitage tuled sisse
}
// ---------- Kõrvaldamine (valikuline) ----------
Serial.print("Temp: ");
Serial.print(temperatureC);
Serial.print(" °C\tLight: ");
Serial.println(ldrValue);
}
Video:
https://drive.google.com/file/d/1QWBgqt3Q0Z7bMzt6q27vcgXm_-C5oQyc/view?usp=sharing
Uued funktsioonid :
Servo windowServo; – windowServo on ühendatud servo viiguga
windowServo.attach(servoPin) – See rida seob windowServo objekti viiguga, millega servo on ühendatud. Antud juhul on servo viik 9 (servoPin = 9). See tähendab, et kui kutsutakse funktsiooni, mis kontrollib servo nurka, toimib see sellel viigul.
int targetAngle; – See on muutuja, mis salvestab servoajamile seatava sihtnurga sõltuvalt temperatuurist.
temperatureC – Sõltuvalt temperatuurist (muutuv temperatuurC) arvutatakse servo sihtnurk
windowServo.write(currentAngle); – See rida saadab arvutatud nurga servoajamile. currentAngle on praegune nurk, milleni servo peaks pöörama.


