Teema 4. Temperatuuri andur, Servo mootor

4.1 Katse Temperatuuri andur

Kood

const int temperaturePin = 0;

void setup()
{
Serial.begin(9600);
}

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.print(degreesC);
Serial.print(" deg F: ");
Serial.println(degreesF);

delay(1000); // ootame 1 sek
}

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


4.2. Katse Servo kasutamine

Kood

#include <Servo.h>
Servo mootor;

void setup()
{
  mootor.attach(9);
}

void loop()
{
  int asend;
  mootor.write(90);
  delay(1000); 
  mootor.write(180);
  delay(1000);
  mootor.write(0);
  delay(1000);

  for(asend = 0; asend < 180; asend += 2)
  {
    mootor.write(asend);
    delay(20);
  }

  for(asend = 180; asend >= 0; asend -= 1)
  { 
    mootor.write(asend);
    delay(20);
  }
}


Ülesanne 4 Temperatuuritundlik servolülitus(Kasvuhoone temperatuuri reguleegimine)

Töö kirjeldus
Luua automatiseeritud miniatuurne kasvuhoonesüsteem, mis reageerib ümbritsevale temperatuurile ja valgusele. 
Süsteem peab suutma juhtida servomootorit temperatuurimuutuse alusel ning lülitada valguse sisse või välja vastavalt valgustugevusele, kasutades fototakistit. 
See projekt võimaldab siduda reaalseid keskkonnatingimusi elektroonikaga ja simuleerida taimede automaatset hooldust väikekasvuhoones.

Komponendid:
1x Arduino UNO
1x Photoresistor
1x Temperatuuri andur
1x Servomootor
2x LED
1x 10K Oom Takisti
2x 220 Oom Takisti
16x Juhtmed

Kood
GitHub Link

Uued funktsioonid
1. Servo servoMotor – see luuab servoMootori kasutateks Servo.h teeki.

Töö protsess
1. servoMotor.attach(servoPin) – Seame servo mootori pindi (pin 11) ühendamiseks.
2. servoMotor.write(currentAngle) – Seame servo mootori algnurgaks väärtuse 90 kraadi.
3. delay(1000) – Ootame 1 sekundi, et servo saaks oma algseisundisse jõuda.
4. analogRead(tempPin) – Loeme temperatuurianduri väärtuse analoogpinnilt (A1), et saada temperatuurinäit.
5. temperature = (voltage – 0.5) * 100.0 – Arvutame temperatuuri, kasutades temperatuurianduri teisendustabelit.
6. if (temperature < 25) – Kui temperatuur on alla 25 kraadi, määrame sihtnurgaks 0 kraadi (servo liikumine madalamaks).
7. else – Kui temperatuur on üle 25 kraadi, määrame sihtnurgaks 180 kraadi (servo liikumine kõrgemale).
8. servoMotor.write(currentAngle) – Seame servo nurgaks arvutatud väärtuse.
9. analogRead(ldrPin) – Loeme valgusanduri väärtuse analoogpinnilt (A0), et mõõta keskkonnavalguse taset.
10. if (lightLevel < 500) – Kui valguse tase on madalam kui 500, süütame rohelise LEDi ja lülitame sinise LEDi välja.
11. else – Kui valguse tase on üle 500, süütame sinise LEDi ja lülitame rohelise LEDi välja.

Video
Google Drive Link