Управление серводвигателем с помощью двух Arduino?

У меня две платы Arduino, две кнопки и один серводвигатель.

Я хочу управлять серводвигателем с помощью двух Arduino, когда я нажимаю кнопки. Я подключил контакты Arduino PWM (первый контакт Arduino PWM — 9, а второй — 3) к входу сигнала серводвигателя.

Когда я нажимал кнопку 1, серводвигатель немного двигался или нажимал кнопку 2. но сигнал не был четким, и серводвигатель не двигался правильно, как я задал степень.

Что я могу сделать для решения?

Мой первый код Arduino здесь:

#include<Servo.h>

#define Buton 8

Servo myServo;

void setup() {
  pinMode(Buton, INPUT);
  myServo.attach(3);
}

void loop()
{
  if (digitalRead(Buton) == 1)
  { 
    myServo.write(90);
  }
  else
  {
    myServo.write(180);
  }

}

и второй код Arduino:

#include<Servo.h>

#define Buton 8

Servo myServo;

void setup() {
  pinMode(Buton, INPUT);
  myServo.attach(9);
}

void loop()
{
  if (digitalRead(Buton) == 1)
  { 
    myServo.write(90);
  }
  else
  {
    myServo.write(180);
  }

}

, 👍0

Обсуждение

У вас есть 2 Ардуино в первую очередь? Вам действительно нужны оба?, @chrisl

мы должны использовать mcu.но это не должно быть arduino. изменится ли это, если мы используем другой микроконтроллер?, @Giray Hakan

это не отвечает на вопрос зачем вам две ардуино, @jsotola


1 ответ


2

Вы не можете просто так соединить случайные контакты. Соединение двух выходных контактов вместе — это путь к катастрофе. В лучшем случае: ничего не работает. В худшем случае вы сломаете один или оба Arduino.

Только один Arduino может управлять сервоприводом. Если вы хотите, чтобы второй Arduino заставил что-то произойти с сервоприводом, вы должны заставить его сообщить Arduino, который управляет сервоприводом, что что-то должно произойти.

Это может быть простой выход второго Arduino, подключенный к входу первого Arduino, и в этом случае он действует как кнопка. Или вы можете создать какой-то канал связи между ними — возможно, используя последовательное соединение или проводное (I2C) соединение. Есть много способов, и какой из них лучше, зависит от того, насколько сильно один Arduino должен контролировать другой.

,

спасибо за ваш ответ @Majenko, но позвольте мне объяснить. мы ракетная команда, и мы должны использовать две системы управления полетом. поэтому мы используем две Arduino для этой ракеты. первый Arduino является основным контроллером, а второй - резервной системой. у нас есть разные датчики, но у нас есть один двигатель для развертывания. мы хотим использовать второй ардуино, если первый ардуино не будет работать. Я не знаю, это описательно?, @Giray Hakan

Затем вам нужно иметь какое-то устройство, которое находится между двумя Arduino и сервоприводом и выбирает, какому Arduino разрешено общаться с сервоприводом. Вы можете иметь один Arduino в «режиме ожидания», контролируя другой Arduino, и, если он выйдет из строя, щелкнуть «переключателем», который позволяет ему управлять сервоприводом и взять его на себя., @Majenko

@Giray Hakan Когда вы говорите о резервном копировании в случае сбоя, вы сначала должны определить случаи сбоя, которые вы хотите здесь смягчить. Может быть много разных способов, в которых система может дать сбой, и которые должны быть обнаружены и смягчены по-разному., @chrisl

@Majenko какой тип устройства? можете привести пример?, @Giray Hakan

Вы можете использовать микросхему MUX. Или реле. Существует множество решений, как механических, так и на основе кремния., @Majenko

хорошо, спасибо, я попробую., @Giray Hakan