Ход работы

  1. Изучили материал
  2. Сделали схему и задали значения переменных и вывод пинов
#include  <Servo.h> //подключение библиотеки 
const int temperaturePin = 0; 
const int sensorPin = 1;
float voltage, degreesC;
Servo servo1; //переменная(объект) типа данных Servo 
int lightLevel;
int yellowPin = 5;
int yellowPin2 = 3;
int position = 90;
void setup()
{
  servo1.attach(9); //прикрепление пина 9 (сервопривода) к переменной
  Serial.begin(9600);
  pinMode(5, OUTPUT);
  pinMode(3, OUTPUT);
}

3. Написали вспомогательные функции и функции для сбора информации

float getVoltage(int pin) //получает вольтаж
{
  return (analogRead(pin) * 0.004882814);
}

float tmp_stat() //собирает статистику с температурного датчика
{
  voltage = getVoltage(temperaturePin); //используется функция написанная выше
  degreesC = (voltage - 0.5) * 100.0; //по формуле рассчитывается температура в градусах Цельсия
  return voltage, degreesC; //возвращает вольтаж и температуру

}

void manualTune() //функцию для переноса значений
{
  lightLevel = analogRead(sensorPin);
  lightLevel = map(lightLevel, 300, 800, 1, 2);    
}

4. Написали основные функции

void servo_code() //функция для движения сервопривода
{
  if (degreesC > 35) //конструкция if. Если градусов >/< n, то 
  {
      for (position; position != 181; position++) //цикл для движения сервопривода в позицию 180
      {
          servo1.write(position);
          delay(25);
      }
  }
  
  else if (degreesC < 22) //иначе
  {
      for (position; position != -1; position--) //в позицию 0
      {
          servo1.write(position);
          delay(25);
      }
  }
  
  else if (degreesC > 22 && degreesC < 35)//иначе в позицию 90
  {
	servo1.write(90);
  }
}

void output_value() //функция, которая выводит информацию на монитор
{
  Serial.print("Voltage: ");
  Serial.print(voltage);
  Serial.print("; deg C: ");
  Serial.print(degreesC);
  Serial.println("");
  Serial.print("Light_lvl: ");
  Serial.print(lightLevel);
  Serial.println("");
  delay(1000);
}

5. Вставили их в основной цикл

void loop()
{
  manualTune();
  tmp_stat();
  servo_code();
  output_value();
  if (lightLevel == 2) //конструкция if для вкл/выкл светодиодов
  {
    digitalWrite(yellowPin, HIGH);
    digitalWrite(yellowPin2, HIGH);    
  }
  
  else if (lightLevel == 1)
  {
  	digitalWrite(yellowPin, LOW);
    digitalWrite(yellowPin2, LOW);
  }
}

Как работает парник

  1. Собирается информация с датчика
  2. Отталкиваясь от n℃ температуры сервопривод принимает определенную позицию
  3. Выводится информация на монитор
  4. Далее работает конструкция if:
    Если темно, то включаются светодиоды.
    Если светло, то выключаются светодиоды.

Ссылка на проект
https://www.tinkercad.com/things/c5Ty21RfBTF-parnik/editel?sharecode=WipiQlcfuWvdCGz9djkektikoiKrtAe34MQ1WrauImg

Компоненты

  • Фоторезистор – 1
  • LED лампа – 2
  • Резистор 220 Ом – 2
  • Резистор 10 кОм – 1
  • Термодатчик – 1
  • Сервопривод – 1
Макетка
Arduino UNO R3

Cхема подключения компонентов к плате

Возможности применения в жизни

Сервопривод можно применить для:

  • В различных роботах
  • Для автоматизации

Термодатчик можно применить для:

  • Измерения температуры в приборе
  • Измерения температуры на каких-то объектах

Видео работы

На видео не получилось показать работу сервопривода