Задать вопрос
@imGleb

Как собрать проект на arduino по плану в Tinkercad?

Суть:
При достижении высокой температуры в одном из двух левых датчиков начинали крутиться сервоприводы. Но они прокрутятся только с одной стороны, если на правом датчике (помечен черным) будет тоже высокая темп. В тинкеркаде все работает, но есть вопросы к сборке в жизни.

1. как подключать регулятор напряжения (модель LM2596S) уже спаяли, но к каким пинам подключать не знаем. 2. Все остальное на фото делать как в тинкеркаде, или надо добавлять чтото при сборке в жизни? 3. самое сложное. как нам сделать нагревательный резистор на плате?
69179f5353657071429371.png

Вот код:
#include <Servo.h>

Servo servo1, servo2, servo3, servo4;
int servoPins[4] = {8, 9, 10, 11};
int heaterPin = 3;

int tempSystPin = A0;    // датчик 1: темп системы
int tempWarnPin = A1;   // датчик 2: от опасности (парник)  
int tempSunPin = A2;   // датчик 3: внешняя темп

float tempSyst, tempWarn, tempSun;

int currentAngle = 0;
int targetAngle = 0;

void setup() {
  Serial.begin(9600);  
  
  servo1.attach(servoPins[0]);
  servo2.attach(servoPins[1]);
  servo3.attach(servoPins[2]);
  servo4.attach(servoPins[3]);
  
  pinMode(heaterPin, OUTPUT);
  digitalWrite(heaterPin, LOW);

  delay(1000);
}
//для всех серво
void openAllLouvers() {
  servo2.write(45);
  servo3.write(45);
  servo1.write(45);  
  servo4.write(45);
}
void closeAllLouvers() {
  servo2.write(0);  
  servo3.write(0);
  servo1.write(0);
  servo4.write(0);
}
//для половины серво
void open14Louvers() {
  servo1.write(45);  
  servo4.write(45);
}
void close14Louvers() {
  servo1.write(0);   
  servo4.write(0);
}
void loop() {
  tempSyst = readTemperature(tempSystPin);
  tempWarn = readTemperature(tempWarnPin);
  tempSun = readTemperature(tempSunPin);

  Serial.print("System: ");
  Serial.print(tempSyst);
  Serial.print("°C | Warn: ");
  Serial.print(tempWarn);
  Serial.print("°C | Sun: ");
  Serial.print(tempSun);
  Serial.println("°C");
  
  // 1 функция: от перегрева системы
  if (tempSyst > 30.0) {
    if (tempWarn < tempSyst) {
      // темп опасности нет - открыть
      openAllLouvers();
      digitalWrite(heaterPin, LOW);
      Serial.println("COOLING: Opening louvers");
    } else {
      // снаружи жарко - открыть безопасную створку
      closeAllLouvers();
      open14Louvers();
      digitalWrite(heaterPin, LOW);
      Serial.println("OVERHEAT PROTECTION: Closing louvers");
    }
  } 
  // 1 функция: от внешнего перегрева
  else if (tempSun > 30.0) {
    if (tempWarn < tempSun) {
      // темп опасности нет - открыть
      openAllLouvers();
      digitalWrite(heaterPin, LOW);
      Serial.println("COOLING: Opening louvers");
    } else {
      // парниковая опасность - открыть безопасную
      closeAllLouvers();
      open14Louvers();
      digitalWrite(heaterPin, LOW);
      Serial.println("OVERHEAT PROTECTION: Closing louvers");
    }
  //холодно внутри
  } 
  else if (tempSyst < 30.0 and tempSun < 30.0) {
    closeAllLouvers();
    digitalWrite(heaterPin, HIGH);
    Serial.println("HEATING: Closing louvers + heater ON");
  }
  
  else {
    // Нормальная температура
    closeAllLouvers();
    digitalWrite(heaterPin, LOW);
    Serial.println("NORMAL: Maintaining temperature");
  }
  delay(2000);
}

// функция для TMP36
float readTemperature(int pin) {
  int sensorValue = analogRead(pin);
  float voltage = sensorValue * (5.0 / 1024.0);
  return (voltage - 0.5) * 100.0;

// плавное движение?
void smoothMoveServos(int angle) {
  targetAngle = angle;
  
  while (currentAngle != targetAngle) {
    if (currentAngle < targetAngle) {
      currentAngle++;
    } else {
      currentAngle--;
    }
    
    servo1.write(currentAngle);
    servo2.write(currentAngle);
    servo3.write(currentAngle);
    servo4.write(currentAngle);
    delay(15);  // Задержка для плавности?
  }
}
  • Вопрос задан
  • 9 просмотров
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    Основы электроники
    4 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы