Проблема 2х кнопок Ардуино Уно

elderbull
Offline
Зарегистрирован: 20.05.2019

Можете помочь Не могу сделать программу на ардуино Уно. Мне нужно что бы сигналы от 2-х кнопок подключенных к ардуино впускала на одних контактах и выпускала на других так же как если бы и ее не было, но при нажатии обеих кнопок одновременно не сигнала от нажатия не было.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

давай свою схему (накрайняк, наскальный рисунок)  и код. 

bwn
Offline
Зарегистрирован: 25.08.2014

А я, тоже на всякий случай, в песочницу телепортирую. То ТС, рекомендую начало приколоченной темы прочитать.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

"Проблема 2х кнопок" - это сильно!  Думаю, мемом станет. Эт..те не какая-нибудь "проблема выеденного яйца"!

KindMan
Offline
Зарегистрирован: 19.12.2018

Молодец ТС, поднял настроение, напомнил https://youtu.be/JCwS3lGxJCU

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

ТС под какой травой тему создавал?

elderbull
Offline
Зарегистрирован: 20.05.2019

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

b707
Offline
Зарегистрирован: 26.05.2017

elderbull пишет:

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

и в чем проблема? - всего два условия в программе

Если ((нажата кнопка ЛЕВО) и (не нажата ПРАВО)) - выдаем сигнал ЛЕВО

Если ((нажата кнопка ПРАВО) и (не нажата ЛЕВО)) - выдаем сигнал ПРАВО

KindMan
Offline
Зарегистрирован: 19.12.2018

Я думаю, ТС нужно в работающем джойстике сделать отключение сигнала нажатия обеих кнопок сразу. Т.е. кнопки подключить к ардуино, а из неё вернуть в устройство назад, чтобы ардуина имитировала нажатие.
ТС, я правильно понял?

elderbull
Offline
Зарегистрирован: 20.05.2019

Да

b707
Offline
Зарегистрирован: 26.05.2017

судя по ответам - автору лет восемь

elderbull
Offline
Зарегистрирован: 20.05.2019
Мне нужно условие сли 2 кнопки нажаты однавремено то первые 2 условия не выполняются
 
void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
  
  Serial.begin(9600);
}  
 
void loop() {
  boolean button1 = digitalRead(10);
  boolean button2 = digitalRead(11);
  
  if (button1 == 1) digitalWrite(2, 1);
  else digitalWrite(2, 0);
  
  if (button2 == 1) digitalWrite(3, 1);
  else digitalWrite(3, 0);
  
  
 
  
  
  Serial.print("Button1: ");Serial.print(button1);
  Serial.print("Button2: ");Serial.println(button2);
 
  
}
Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018
if (!digitalRead(10) && !digitalRead(11)) {
	;
} else {
	digitalWrite(2, digitalRead(10));
	digitalWrite(3, digitalRead(11));
}

Поскольку вы поддтгиваете пины кнопок к "единице", наверно замкнутое (нажатое) состояние 0

b707
Offline
Зарегистрирован: 26.05.2017

elderbull пишет:

Мне нужно условие сли 2 кнопки нажаты однавремено то первые 2 условия не выполняются

в сообщении #7 я вам написал, как сформулировать условия для того, что вам нужно

elderbull
Offline
Зарегистрирован: 20.05.2019

Неработает нажатия так и так проходят

elderbull
Offline
Зарегистрирован: 20.05.2019

Так чтоли void setup()

{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
  
  Serial.begin(9600);
}  
 
void loop() {
  boolean button1 = digitalRead(10);
  boolean button2 = digitalRead(11);
  
  if (button1 == 0 && button2 == 1) digitalWrite(3, 0);
  else digitalWrite(2, 1);
  
  if (button1 == 0 && button2 == 1) digitalWrite(2, 0);
  else digitalWrite(3, 1);
 
  
  Serial.print("Button1: ");Serial.print(button1);
  Serial.print("Button2: ");Serial.println(button2);
 
  
}
KindMan
Offline
Зарегистрирован: 19.12.2018

А чем вас код Алексея не подходит?
Осталось дело за малым, победить "дребезг" контактов

elderbull
Offline
Зарегистрирован: 20.05.2019

Все я сделал так чтобы работало так как мне нужно , Спасибо за помошь.

void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
  
  Serial.begin(9600);
}  
 
void loop() {
  boolean button1 = digitalRead(10);
  boolean button2 = digitalRead(11);
  
  if (button1 == 1 && button2 == 0) digitalWrite(3, 0);
  else digitalWrite(3, 1);
  
  if (button1 == 0 && button2 == 1) digitalWrite(2, 0);
  else digitalWrite(2, 1);
 
  
  Serial.print("Button1: ");Serial.print(button1);
  Serial.print("Button2: ");Serial.println(button2);
 
  
Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018
                       | digitalRead(10) | digitalRead(11) | digitalWrite(2) | digitalWrite(3)
-----------------------+-----------------+-----------------+-----------------+-----------------
замкнуты обе           |        0        |        0        |        1        |        1
не замкнута ни одна    |        1        |        1        |        1        |        1
замкнута только вторая |        1        |        0        |        1        |        0
замкнута только первая |        0        |        1        |        0        |        1

Логика очевидная, инверсия "исключающего или" + логическое "или" с одним из входов

boolean button1 = digitalRead(10);
boolean button2 = digitalRead(11);
digitalWrite(2, (!(button1 ^ button2) | button1);
digitalWrite(3, (!(button1 ^ button2) | button2);