Praktika 4 Temperatuuri andur, Servo mootor

4.1 Katse Temperatuuri andur

Toob välja serial monitoril kuidas muuta temperatuuri, temperatuurianduri abil

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

Servomootor pöörab 180 kraadi

// Множество библиотек доступных для применений, можно найти на http://arduino.cc/en/Reference/Libraries,


#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); 
}
}

Ülesanne 4 Temperatuuritundlik servolülitus

Töö kirjeldus

Skeem töötab nii, et kui temperatuur tõuseb üle 34 kraadi, siis süttib punane tuli ja aken avaneb servo mootoriga abil. Kui temperatuur on sobiv, põleb roheline värv ja aken sulgub, kui temperatuur on alla 22 kraadi, jääb aken suletuks.

Töö protsess

Termoanduri abil plaat loeb temperatuure ja põleb sõltuvalt sellest soovitud värvi ja akna asendit vajadusel muuta.

Kasutatud komponeendid

  • Arduino UNO plaat (1tk)
  • Arendusplaat (1tk)
  • Juhtmed (15tk)
  • RGB (1tk)
  • Termoandur(1tk)
  • Servo mootor(1tk)
  • Takisti (3tk, 220Om)

Skeem

https://www.tinkercad.com/things/8hmdAOBDh7q-temperatuuritundlik-servolulitus

Kood

#include <Servo.h>

const int RedPin = 6;
const int BluePin = 5;
const int GreenPin = 3;
const int temperaturePin = A0; 

Servo servo1;


void setup() {
 Serial.begin(9600);
 servo1.attach(11);
 pinMode(RedPin, OUTPUT);
 pinMode(GreenPin, OUTPUT);
 pinMode(BluePin, OUTPUT);
}

void loop() {

 float voltage, degreesC, degreesF;
 voltage = getVoltage(temperaturePin);
 degreesC = (voltage - 0.5) * 100.0;
 degreesF = degreesC * (9.0/5.0) + 32.0;
 Serial.print("voltage: ");
 Serial.print(voltage);
 Serial.print(" deg C: ");
 Serial.println(degreesC);

 if (degreesC < 22) {
    digitalWrite(BluePin, HIGH);
    digitalWrite(RedPin, LOW);
    digitalWrite(GreenPin, LOW);
    closeWindow();
 } else if (degreesC > 34) {
    digitalWrite(RedPin, HIGH);
    digitalWrite(GreenPin, LOW);
    digitalWrite(BluePin, LOW);
    openWindow();
 } else {
    digitalWrite(RedPin, LOW);
    digitalWrite(GreenPin, HIGH);
    digitalWrite(BluePin, LOW);
    closeWindow();
 }
}

float getVoltage(int pin) {
 return (analogRead(pin) * 0.004882814);
}

void openWindow() {
servo1.write(180);
 }

void closeWindow() {
servo1.write(0);
 }

Video

https://drive.google.com/drive/folders/1_CzZ7n2dj7DpFpDRdKmMiQSzj8nEpFBw?usp=sharing

Uued funktsiooni

#include <servo.h> – võimaldab teil kasutada servo raamatukogu
Servo servo1 – salvestab muutuja nimega “Servo” nagu “servo1”
servo1.attach() – Kleebib muutuja pini külge
servo1.write() – Kirjutab servo väärtuse, kontrollides võlli vastavalt