Robootika: Temperatuuri andur, Servo mootor

Temperatuuti andur

Katse temperatuuri mõõtmiseks temperatuurianduri abil.

Saadud tulemused kirjutame  iga sekundi tagant Serial Monitori.

Code:

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.
}

Servo mootori ühendamine

Kasutusel on 180 kraadi pöörav servo mootor.

Code:

#include <Servo.h> // teavitame Arduino IDE-d, et kasutame mootorite juhtimiseks mõeldud Servo.h teeki

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

Задача проекта: Автоматизированная теплица
Цель:

Создайте автоматизированную миниатюрную теплицу, реагирующую на температуру и освещенность окружающей среды.

Система должна быть способна приводить в действие серводвигатель в зависимости от изменения температуры и включать или выключать освещение в зависимости от интенсивности света с помощью фотопроводника.

Этот проект позволит связать реальные условия окружающей среды с электроникой и смоделировать автоматизированный уход за растениями в небольшой теплице.

Необходимые компоненты:

Датчик температуры (например, LM35, DHT11 или TMP36).

Фотопроводящий резистор (LDR - светозависимый резистор).

Серводвигатель (маленький, например SG90).

Светодиод (для имитации света или дополнительной подсветки).

Arduino Uno

Резисторы (для LDR и светодиода)

Проводка и макетная плата

Коробка или элемент поверхности для установки датчиков и компонентов

Источник питания (USB, аккумулятор или перезаряжаемая батарея)

Code:

#include <Servo.h>

const int tempPin = A1;      
const int ldrPin = A0;      
const int ledPin = 8;        
const int servoPin = 9;      

Servo windowServo;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  windowServo.attach(servoPin);
}

void loop() {

  int tempValue = analogRead(tempPin);
  float voltage = tempValue * (5.0 / 1023.0);  
  float temperature = voltage * 100.0;        

  int angle = map(temperature, 20, 30, 0, 80);
  angle = constrain(angle, -20, 80);            
  windowServo.write(angle);

  int ldrValue = analogRead(ldrPin);
  int threshold = 500;                          

  if (ldrValue < threshold) {
    digitalWrite(ledPin, HIGH);  // Темно
  } else {
    digitalWrite(ledPin, LOW);   // Светло
  }

  Serial.print("Temperatur: ");
  Serial.print(temperature);
  Serial.print(" °C | Level: ");
  Serial.print(angle);
  Serial.print(" | Filgt: ");
  Serial.println(ldrValue);

  delay(500);
}


Video: