Правильное использование 5-контактной кнопки с Arduino

В настоящее время я пытаюсь создать простой тестовый скетч двигателя для тестирования шагового двигателя NEMA 23 и шагового драйвера DM542T.

Вот код, и у меня возникли проблемы с пониманием того, как правильно подключить кнопку с 5 выводами (+, -, Common, NO, NC).

Вот этот код

// Номера контактов
const int buttonPin = 2;
const int directionPin = 8;
const int stepPin = 9;

// Другие константы
const int NumSteps = 5000; // шаги
const int Speed = 500; 

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(directionPin, OUTPUT);
  pinMode(stepPin, OUTPUT);
  digitalWrite(directionPin, LOW);
  digitalWrite(stepPin, LOW);
}

void loop() {
  if (digitalRead(buttonPin)) {
    // Двигаться в одном направлении
    for (int distance = 0; distance < NumSteps; distance++) {
      digitalWrite(stepPin, HIGH);
      delayMicroseconds(Speed);
      digitalWrite(stepPin, LOW);
      delayMicroseconds(Speed);
    }
   // Обратное направление
   digitalWrite(directionPin, !digitalRead(directionPin));
 }
  delay(5);
}

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

У меня есть кнопки Common и Neg, соединенные вместе и подключенные к контакту Gnd на Arduino (mega rev3) У меня есть положительные кнопки и ЧПУ, соединенные вместе и подключенные к контакту 2.

Подключение этой кнопки таким образом отлично работает в скетче мигания с управлением кнопкой, но здесь не работает (светодиод на кнопке не загорается, и тест двигателя не запускается).

Примечание: я использую мгновенную кнопку с 5 выводами, так как именно для этого проекта будут использоваться эти двигатели.

Любая помощь приветствуется.

, 👍0

Обсуждение

Можете ли вы перейти по ссылке на страницу продукта buttons или техническое описание? Простая кнопка с 5 контактами встречается не очень часто, поэтому важно, как кнопка использует контакты., @chrisl

Для этого нет спецификации. Это стандартная светодиодная кнопка с 5 выводами с +,-, common, NC, NO. Он отлично работал при подключении к скетчу мигания с кнопочным управлением, когда NO не подключен, NC и + подключены вместе к 5 В, а общие и - подключены вместе к Gnd. Светодиод на кнопке загорается, а светодиод на Mega загорается при нажатии кнопки, @dinotom

О, не видел, что это светодиодная кнопка. Не могли бы вы, пожалуйста, составить диаграмму, какие соединения у вас действительно есть? Это трудно интерпретировать с помощью текста (и у вас разные проводки в вопросе и вашем комментарии). Вы также можете использовать встроенный редактор схем редактора вопросов. Используйте обычный переключатель и светодиод для имитации вашего 5-контактного переключателя, @chrisl

первая мысль: не подключайте светодиод к переключателю .... вторая мысль: если кнопка работает в скетче мигания, то используйте рабочий код переключателя в скетче двигателя, @jsotola

Для управления встроенным светодиодом вам не нужен скетч. Просто подключите + к 5 В, а - к Gnd, и кнопка включит / выключит встроенный светодиод. Если это светодиодный ореол или кнопка с подсветкой, совместите NO и + с 5V, а общие и - с Gnd., @dinotom


1 ответ


Лучший ответ:

1

Контакты кнопки следующие:

  • +: Анод светодиода
  • -: Катод светодиода
  • C: Общий вывод переключателя
  • NC: нормально закрытый - обычно подключается к контакту C до тех пор, пока не будет нажата кнопка
  • НЕТ: Нормально разомкнут - подключается к контакту C при нажатии кнопки

Итак, чтобы использовать кнопку в качестве кнопки, вам нужны два вывода: C и NO. Используйте эти контакты (в любом порядке), как и любую обычную кнопку с подтягивающим резистором (или внутренним резистором INPUT_PULLUP).

Использовать светодиод может быть немного сложнее. Большинство кнопок этого типа имеют светодиод, настроенный на использование 12 В. Хотя вы можете получить небольшое свечение от него при 5 В, вам, вероятно, потребуется переключить его с помощью транзистора и включить питание от 12 В, чтобы он загорелся должным образом. Однако ваша кнопка может быть рассчитана по-разному и нуждаться в другом напряжении.

,

Итак, в этом случае что бы вы использовали в качестве сигнала и послали на вывод 2: провод NO или общий? Я полагаю, что другой пошел бы в Gnd., @dinotom

@dinotom Это действительно не имеет значения. Это просто куски металла, которые соприкасаются, когда вы нажимаете кнопку, и, поскольку вы не используете вывод NC, который является which для C и NO, не имеет абсолютно никакого значения., @Majenko

Да, использовал NO для вывода 2 и C для Gnd, последовательный монитор показывает, что он меняется. Перейдем к следующей проблеме: кнопка не включает двигатели. При подключении pos к 5V и Neg к Gnd индикатор на кнопке начинает мигать, странно, что он работает, как описано ранее. Я отправлю другой вопрос позже, если я не смогу разобраться в этом сам. Сначала моторы., @dinotom