4. Katse Temperatuuri andur ja Servo

4.1 Katse Temperatuuri andur

Komponeendid:

  • Arduino Uno
  • Arendusplaat
  • Juhtmed
  • Andur TMP36

Scheme

const int temperaturePin = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
float voltage, degreesC, degreesF;
// Сначала мы измерим напряжение на аналоговом входе. Обычно для этого мы
// использовали функцию analogRead(), которая возвращает число от 0 до 1023.
// Здесь же мы написали специальную функцию, о ней чуть дальше, под
// названием getVoltage(), которая возвращает напряжение (от 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);
// Вывод информации будет иметь вид подобно следующему:
// "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);
// Это уравнение преобразует значение напряжения от 0,0 до 5,0 В., полученное с помощью функции analogRead() с аналогового порта, в значения от 0 до 1023.
}

4.2. Katse Servo kasutamine

Komponeendid:

  • Arduino Uno
  • Arendusplaat
  • Juhtmed
  • Servo mootor

Scheme

#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;
// Для управления сервоприводом, вы указываете ему угол на который он должен переместиться. Сервоприводы не могут повернуться на 360
// градусов, но вы можете указать ему, чтобы он поворачивался в определенную позицию от 0 до 180 градусов.
servo1.write(90); //pööramise nurk =90 (Говорим серве повернуться на позицию 90 градусов, т.е устанавливаем в среднее положение)
delay(1000); 
servo1.write(180); //pööramise nurk =180 (180 градусов, т.е устанавливаем в крайнее правое положение.)
delay(1000);
servo1.write(0); //pööramise nurk =0 (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 ("Говорим" сервоприводу повернуться на позицию 0 градусов, с шагом в 1 градус):
for(position = 180; position >= 0; position -= 1)
{ 
servo1.write(position); // positsiooni muutmine (Переместиться на следующую позицию)
delay(20); 
}
}

Ülesanne Temperatuuritundlik servolülitus

Komponeendid:

  • Arduino Uno
  • Arendusplaat
  • Juhtmed
  • Servo mootor
  • Termoandur
  • Fototakisti
  • RGB LED
  • Takisti 220 Om
  • Takisti 10k Om
  • Kondensaator 100 µF – 25V

Scheme

Video:

Töö Kirjeldus:

Käesolevas dokumendis tutvustatakse temperatuuriandurit ja ajamit. Ajam võtab 2 asendit sõltuvalt temperatuuri näitest:
Kui temperatuur on alla 22, on asend 0.
kui temperatuur on üle 35 kraadi, on asend 180 kraadi.
Lisaks on lisatud fotoresistor, RGB LED ja kondensaator. Kui kasvuhoone on pime, siis süttib sinine valgus ja kustub, kui on heledat.

Code:

#include <Servo.h>
// Pins RGB valgusdioodide jaoks
const int RED_PIN = 4;
const int GREEN_PIN = 2;
const int BLUE_PIN = 3;
// Servomootori objekt
Servo servoMotor;
// Temperatuuri- ja valgusanduri viik
const int temperaturePin = A0;
const int lightSensorPin = A1;
// Künnisväärtus pimeduse määramiseks
const int darkThreshold = 100;  
void setup()
{
  // Servomootori ühendamine viiguga 9
  servoMotor.attach(9);
  
  // Määrake RGB valgusdioodide režiimid
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
  
  // Alusta jadakommunikatsiooni 9600 bps
  Serial.begin(9600);
}
void loop()
{
  // Loe valgustustiheduse väärtust
  int lightValue = analogRead(lightSensorPin);
  
  // Loe temperatuuri väärtust
  float temperature = readTemperature();
  // Servomootori ja RGB LED-i juhtimine sõltuvalt temperatuuri väärtusest
  if (temperature <= 74.0)
  {
    servoMotor.write(0);
  }
  else if (temperature >= 85.0)
  {
    servoMotor.write(180);
  }
  else
  {
    int servoPosition = map(temperature, 74, 85, 0, 180);
    servoMotor.write(servoPosition);
    digitalWrite(RED_PIN, LOW);
    digitalWrite(GREEN_PIN, LOW);
    digitalWrite(BLUE_PIN, HIGH);
  }
  // Valgustusest sõltuv RGB LED juhtimine
  if (lightValue <= darkThreshold)
  {
    digitalWrite(RED_PIN, LOW);
    digitalWrite(GREEN_PIN, LOW);
    digitalWrite(BLUE_PIN, LOW);
  }
  else
  {
    digitalWrite(RED_PIN, LOW);
    digitalWrite(GREEN_PIN, LOW);
    digitalWrite(BLUE_PIN, HIGH);
  }
  // Valgustugevuse ja temperatuuri väärtuste väljastamine jadakommunikatsioonimonitorile
  Serial.print("Light value: ");
  Serial.println(lightValue);
  Serial.print("Temperature: ");
  Serial.println(temperature);
  
  delay(1000);// 1 sekundi pikkune paus
}
float readTemperature()
{
  int sensorValue = analogRead(temperaturePin);
  float voltage = sensorValue * (5 / 1023.0);
  float temperature = voltage * 100.0;
  return temperature;
}

Servomootori kasutamine elus:

  • Positsioneerimine ja juhtimine
  • Koormuse stabiilsus
  • Tagasiside
  • Lai kasutusala – Servomootoreid kasutatakse erinevates valdkondades, sealhulgas lennunduses, robootikas, autotööstuses ja elektroonikas, tänu nende mitmekülgsusele ja suurele jõudlusele.

Soojusanduri kasutamine elus:

  • Temperatuuri mõõtmine
  • Kõrge täpsus
  • Erinevad tüübid
  • Lai rakendus – Soojusandureid kasutatakse kütte- ja kliimaseadmetes, tööstuses, toiduainetööstuses, meditsiinis ja muudes tööstusharudes, kus temperatuuri kontroll on oluline aspekt.

Uus funktsioonid:

#include <moodul.h> – mooduli paigaldamine

en_US en_USru_RU ru_RU