Su ostukorv on hetkel tühi!
Praktika 4 Temperatuuri andur, Servo mootor
4.1 Katse Temperatuuri andur


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.
4.2. Katse Servo kasutamine

// Paljud saadaolevad teegid (library’d) on leitavad aadressilt http://arduino.cc/en/Reference/Libraries
#include <Servo.h> // teavitame Arduino IDE-d, et kasutame mootorite juhtimiseks mõeldud Servo.h teeki
// Kui teek on lisatud, saame kohe kasutada selle funktsioone.
// Servo teegi funktsioonide nimekirja leiad: http://arduino.cc/en/Reference/Servo
// Enamik teeke on kättesaadavad menüüst "File / Examples".
Servo mootor; // Loome objekti nimega "mootor", millega juhime pöördemootorit (servomootorit)
void setup()
{
// Seome mootori juhtimise digitaalse pinni 9 külge.
// Kui kasutad rohkem kui ühte mootorit, peab iga uus mootor olema seotud eraldi digitaalse pordiga.
mootor.attach(9); // Ühendame mootori juhtimise digitaalpordi 9 külge. See peab olema PWM-toega väljund.
}
void loop()
{
int asend;
mootor.write(90); // Pöörame mootori asendisse 90 kraadi
delay(1000);
mootor.write(180); // Pöörame mootori 180 kraadi
delay(1000);
mootor.write(0); // Pöörame mootori tagasi 0 kraadi
delay(1000);
// Mootori pööramine aeglaselt päripäeva (0 → 180 kraadi)
for(asend = 0; asend < 180; asend += 2)
{
mootor.write(asend); // Muudame mootori asendit
delay(20); // Lühike paus sujuvaks liikumiseks
}
// Mootori pööramine aeglaselt vastupäeva (180 → 0 kraadi)
for(asend = 180; asend >= 0; asend -= 1)
{
mootor.write(asend); // Muudame mootori asendit
delay(20); // Lühike paus sujuvaks liikumiseks
}
}
Ülesanne 4 Temperatuuritundlik servolülitus(Kasvuhoone temperatuuri reguleegimine)

#include <Servo.h>
// Пины
#define TMPPIN A1 // TMP36 подключён к A1
#define LDRPIN A0 // Фоторезистор
#define LEDPIN 3 // Светодиод
#define SERVOPIN 9 // Серво SG90
Servo servo;
int currentAngle = 0;
void setup() {
Serial.begin(9600);
pinMode(LEDPIN, OUTPUT);
servo.attach(SERVOPIN);
}
void loop() {
// --- Температура ---
int rawTemp = analogRead(TMPPIN);
float voltage = rawTemp * (5.0 / 1023.0); // Преобразуем в напряжение
float temperature = (voltage - 0.5) * 100.0; // Формула TMP36
Serial.print("Температура: ");
Serial.print(temperature);
Serial.println(" *C");
// --- Освещённость ---
int lightLevel = analogRead(LDRPIN);
Serial.print("Освещённость: ");
Serial.println(lightLevel);
// --- LED ---
if (lightLevel < 500) {
digitalWrite(LEDPIN, LOW); // Темно — выключаем
} else {
digitalWrite(LEDPIN, HIGH); // Светло — включаем
}
// --- Servo — температурное управление ---
int targetAngle;
if (temperature <= 20) {
targetAngle = 0;
} else if (temperature >= 30) {
targetAngle = 180;
} else {
targetAngle = map(temperature, 21, 29, 0, 180);
}
if (currentAngle < targetAngle) {
currentAngle++;
} else if (currentAngle > targetAngle) {
currentAngle--;
}
servo.write(currentAngle);
delay(15);
}