SOLVED - Переключить PIN-код, а также запустить другой контакт в Arduino

Я бы хотел знать.

У меня есть Pin 6, 7, 8 и 9 как INPUT_PULLUP. Я переключаю друг на друга. Почему, когда я нажимаю переключатель на PIN 6. ИНОГДА PIN 7 также получает вход. Другой случай, также когда я нажимаю переключатель на 7, другой контакт также срабатывает. Зачем?

Этот случай случайный. Иногда все нормально, когда я нажимаю 10 раз, но после этого другой контакт также срабатывает. Другой случай только 4-5 раз нажимает, затем другой контакт также срабатывает.

Я использую переключатель включения/выключения не временного переключателя.

Как это исправить? Это обычная проблема с ардуином?

<�Сильный> UPDATE

Программа. (Простая программа)

int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 5;

int switch1 = 6;
int switch2 = 7;
int switch3 = 8;
int switch4 = 9;

int led = 13;

//int counter = 0;

void setup()
{
 //put your setup code here, to run once
      pinMode(led1, OUTPUT);
      pinMode(led2, OUTPUT);
      pinMode(led3, OUTPUT);
      pinMode(led4, OUTPUT);
      pinMode(switch1, INPUT_PULLUP);
      pinMode(switch2, INPUT_PULLUP);
      pinMode(switch3, INPUT_PULLUP);
      pinMode(switch4, INPUT_PULLUP);
      pinMode(led, OUTPUT);
}  
void loop()
{

if (digitalRead(switch1) == 0){
  digitalWrite(led1, HIGH);
  }

 if (digitalRead(switch1) == 1){
  digitalWrite(led1, LOW);
  } 

if (digitalRead(switch2) == 0){
  digitalWrite(led2, HIGH);
  }

 if (digitalRead(switch2) == 1){
  digitalWrite(led2, LOW);
  } 


if (digitalRead(switch3) == 0){
  digitalWrite(led3, HIGH);
  }

 if (digitalRead(switch3) == 1){
  digitalWrite(led3, LOW);
  } 


if (digitalRead(switch4) == 0){
  digitalWrite(led4, HIGH);
  }

 if (digitalRead(switch4) == 1){
  digitalWrite(led4, LOW);
  } 

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

}

<�Сильный> Схема

Мой контур прост, как и для ввода. Для выхода только светодиод, резистор и земля.

I found similar case http://www.instructables.com/id/Arduino-Push-Switch-Debouncing-Interrupts/

На веб-сайте он сказал: «Проблема с этой настройкой была, когда   нажата кнопка, прерывание вызывалось несколько раз и   даже переключая другие кнопки. Почему это произошло? Это вызвано   переключение с обратной связью.

Есть ли какое-либо решение без изменения аппаратного обеспечения?

<�Сильный> РЕШИТЬ

Проблема в том, что провод.

Мой провод для переключателя - это кабель перемычки, и друг друга ближе (касание) к каждому другому кабелю. Я стараюсь отделиться и работает. Никакой другой контакт не будет триггером.

0
В вашем вопросе говорится, что у вас есть «Pin 2 и 3 as INPUT_PULLUP», но в выводах кода 2 и 3 используются как выходы для LED2 и LED3. Измените вопрос и устраните несогласованность. Также удалите «прерывание» из названия вопроса, потому что он кажется, что вопрос не имеет ничего общего с прерываниями.
добавлено автор Martin C. Martin, источник
@Nateowami, я обновил свой вопрос с помощью кода и схемы. У вас есть опыт? Потому что я думаю, что это должно быть что-то неправильно с Ардуино.
добавлено автор Reunanen, источник
@NickGammon Я обновил свой вопрос с помощью кода и схемы. У вас есть опыт? Потому что я думаю, что это должно быть что-то неправильно с Ардуино.
добавлено автор Reunanen, источник
@Nateowami Я проверяю switch2 и switch3 на мультиметр, и он не подключен. Я использую переключатель лампы (вкл./Выкл.), А не временный. Простой вопрос: Это должно быть прекрасно работать, правильно? У меня также есть другое поведение. Когда я включаю, другая лампа также включена, менее 1 секунды. Проверьте мое видео youtube.com/watch?v=s6CxPuQya0g
добавлено автор Reunanen, источник
@ Маженко, что ты имеешь в виду? Я не понял. Сожалею.
добавлено автор Reunanen, источник
@NickGammon Я уже изменил свой пост.
добавлено автор Reunanen, источник
мой вопрос решен. Всем спасибо.
добавлено автор Reunanen, источник
Я бы предложил прочитать эту статью hackaday.com/2015/12/10/… (а также часть первая). Эллиот рассказывает о переключателях, шуме переключения и о том, как решить проблему (debouncing) в программном обеспечении.
добавлено автор German, источник
Потеряйте задержку (1000)
добавлено автор Majenko, источник
Я имею в виду, что задержка всегда плохая идея, независимо от того, что вы делаете, особенно когда вы читаете переключатели и ожидаете, что они будут реагировать обычным способом.
добавлено автор Majenko, источник
Является ли какой общей проблемой? Без схемы и без кода ваш вопрос не имеет никакого реального смысла. Пожалуйста, прочитайте Как задать хороший вопрос?
добавлено автор Nick Gammon, источник
Почему, когда я нажимаю переключатель на PIN-код 2. ИДЕТ ИДЕТ 3, также получает вход. - у вас есть светодиоды на контактах 2 и 3, а не на переключателях. Таким образом, ваш вопрос не имеет никакого смысла. Пожалуйста, отредактируйте код и схему, так что, по крайней мере, существует некоторая внутренняя согласованность.
добавлено автор Nick Gammon, источник
Можете ли вы опубликовать схему или простую диаграмму схемы?
добавлено автор Brett Ryan, источник
Вы проверили провода, чтобы убедиться, что провода для led2 и led3 не касаются? Если они касаются друг друга, это может заставить их иногда загораться неправильно. Также проверьте провода для switch2 и switch3. Какой переключатель вы используете?
добавлено автор Brett Ryan, источник

1 ответы

У вас может возникать шум переключения между проводом кнопок, который является низкоуровневым и кратким, но без отладки, этого может быть достаточно, чтобы вызвать эффект, который вы видите.

Я бы предложил 1) написать короткую функцию, которая debounces и читает любую кнопку; и 2) использование операторов if/else вместо проверки каждой кнопки дважды.

Быстрый тест состоит в том, чтобы удерживать одну пару проводов ближе друг к другу или дальше друг от друга, пока вы нажимаете одну из этих двух кнопок, и посмотрите, влияет ли расстояние вдали на эффект. Если это так, вы нашли причину.

0
добавлено
Анархическая электроника
Анархическая электроника
1 510 участник(ов)

[около] электронные темы. без переходов на личности, стен стикеров, политики, непрошенной рекламы и всякого такого Основной чат у нас в @ru_electronics Общий информационный канал @ru_electronics_feed

Про электронику
Про электронику
1 461 участник(ов)

QA чат для решения вопросов, связанных с электроникой. без стикеров, непрошенной рекламы и игр в русский форум оформляйте вопрос в одно сообщение вопросы со словом «кто» игнорируются don't ask for ask Правила http://telegra.ph/ru-electronics-rulz-11-11

Embedded Group
Embedded Group
873 участник(ов)

Все про Embedded и электронику. Осторожно, бывают нотификейшены. #вопросподелу - Для поиска вопросов и ответов #devtools - фотки рабочих железок Работа: @rabotaembedded http://embedded.group http://vk.com/embedded_space

Hardware & Radio
Hardware & Radio
155 участник(ов)

Разговоры об электронике, микроконтроллерах, низкоуровневом программировании, реверс-инжиниринге, FPGA, квадрокоптерах, 3D-печати, Software Defined Radio, любительском радио, и всяком таком.

ARDUINO [RU]
ARDUINO [RU]
60 участник(ов)

Обсуждение Электронного конструктора Arduino. Проблемы и их решения. Ссылки на интересные статьи и проекты. ВК: https://vk.com/arduino_esp Realtek: http://vk.com/rtl8711 Чаты: IOT https://t.me/ProIOT esp8266 https://t.me/Proesp8266