Задать вопрос
@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);  // Задержка для плавности?
  }
}
  • Вопрос задан
  • 169 просмотров
Подписаться 2 Средний 3 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Основы электроники
    4 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
@VT100
Embedded hardware & software.
2. Все остальное на фото делать как в тинкеркаде, или надо добавлять чтото при сборке в жизни?

Фото - шакальное. Скорее всего - что-то надо добавить.
Для того, чтобы понять, что надо добавить - сообщите, что это за проект (регулятор форточек в теплице?) и какие компоненты применены (типы датчиков, типы сервоприводов и пр., ссылки на их технические описания).

3. самое сложное. как нам сделать нагревательный резистор на плате?

Что понимается под словами "нагревательный резистор на плате"? Как воткнуть SQP на беспаечную макетку?

P.S. Пользуйтесь нормальными САПР'ами для электроники, а не "тинкеркад не дает добавить в план регулятор напряжения."
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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