Подскажите с кнопками

TynuK
Offline
Зарегистрирован: 05.02.2017

Привет, требуется помощь  точнее совет

Возможно ли сделать так, включение на аналоговых кнопках, а отключение на цмфровой кнопке, имеено той которая нажата на аналоговом?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Что такое "аналоговые кнопки" и чем они отличаются от "цифровых кнопок"?

TynuK
Offline
Зарегистрирован: 05.02.2017

ну вот как всегда на вопрос,отвечают вопросом.\

не могу я вам на это ответить

TynuK
Offline
Зарегистрирован: 05.02.2017

с теорией у меня слабо, что как подключить понимаю

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Ответить на ваш вопрос не представляется возможным, т.к. вы не можете толком объяснить, что вам надо.

TynuK
Offline
Зарегистрирован: 05.02.2017

есть 4 кнопки (а1,а2,а3,а4)  на аналоговом входе, так же 4 подключенны к цифровым входам (1,2,3,4), суть такая если нажать и держать а1 то что то начинает двигаться нажимая в конце кнопку 1 (концевик допустим), реально ли так сделать чтоб нажимая кнопку 1 отключалось имеено кнопка а1? ну как то так.

TynuK
Offline
Зарегистрирован: 05.02.2017

с остальными 3 анолагично

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

:) Если на кнопке нарисована цифра , то кнопка цифровая. А если буква, то буквенная. Оставшиеся, наверно, если логически рассуждать, то аналоговые. Ну разве что , если кнопки китайские- тогда иерографические.. Самое сложное это правильно их подключить. А то нажимаешь например цифру "1", а кнопка подключена вместо "Enter" или еще хуже "Reset".

TynuK
Offline
Зарегистрирован: 05.02.2017

это взрыв моего мозга))) раз ве есть разница? "кнопка она и в африке кнопка" два контакта замыкаются , ну или размыкаются))

TynuK
Offline
Зарегистрирован: 05.02.2017

не как подключить я уже все нашел и подключил и написанно что делать, но необходимость в том чтобы кнопки посадить на аналоговый вход ( так как портов не хватает), и вот тут проблема, кнопки подключил, работают, но вот с добавлением еще тех 4 проблема, то одна работает нормально включает отключает как надо, а другие 3 не работают, то напрежение скачет вместо 5 вольт 1 или меншье, но там сделанно что я отключаю этими 4 кнопками  то что мне надо включить, а хотелось бы чтоб отключали они сами кнопки на аналоговом входе , ну как и написал нажал а1 ее отключает кнопка 1. 

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

TynuK пишет:

это взрыв моего мозга))) раз ве есть разница? "кнопка она и в африке кнопка" два контакта замыкаются , ну или размыкаются))

Не вы не правы. Возьмите кнопку вызова лифта. Ну нажимешь и она загорается и лифт едет. Если красная, то лифт занят. Кнопка включения света. Там два положения . Вкл и выкл. Опять же есть кнопки на клавиатуре . Они работают иначе. Есть сенсоные кнопки, кнопки на смартфоне. А есть кнопки которые можно включать мышкой.  А вы говорите "что кнопка и в Африке кнопка". Да тут я привел примеры, и в Африку ездить не надо.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

TynuK пишет:
есть 4 кнопки (а1,а2,а3,а4)  на аналоговом входе, так же 4 подключенны к цифровым входам (1,2,3,4), суть такая если нажать и держать а1 то что то начинает двигаться нажимая в конце кнопку 1 (концевик допустим), реально ли так сделать чтоб нажимая кнопку 1 отключалось имеено кнопка а1? ну как то так.

Не кнопка отключалась, а прекращалось выполнение какого либо действия (кнопка не может "отключаться"). Можно проверять состояние нескольких кнопок одновременно и в зависимости от их комбанации выполнять или не выполнять какое-то действие.

Например: одна кнопка подключена к A1 (она же 15), вторая к D1 (подключать к D0 и D1 не рекомендую, т.к. на них висит Serial)

void loop() 
{
  if (digitalRead(15)==HIGH && digitalRead(1)==LOW) // если на пине А1 высокий уровень (кнопка нажата) и на пине D1 низкий (не нажата)
  {
    // что-то делаем...
  }
}

В этом примере пока нажата кнопка А1 (HIGH) и не нажата кнопка D1 (LOW) действие будет выполняться. Как только отпустим кнопку А1 (LOW) или нажмём кнопку D1 (HIGH) при нажатой А1 (HIGH) действие прекратит выполняться.

P.S. Аналоговые пины можно считывать как цифровые. Вместо А0 - А5 испольуем нумерацию 14 - 19.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

TynuK пишет:

Возможно ли сделать так, включение на аналоговых кнопках, а отключение на цмфровой кнопке, имеено той которая нажата на аналоговом?

я запретил.

TynuK
Offline
Зарегистрирован: 05.02.2017

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

TynuK
Offline
Зарегистрирован: 05.02.2017

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

но вот digitalRead(15)==HIGH, не смогу так, у меня ведь через резисторы там

короче вот так if(analogVal>250 && analogVal<350 && тут я прописал кнопку которая должна выключать если нажата

TynuK
Offline
Зарегистрирован: 05.02.2017

да понял что херню написал, но интересно возможно ли?

TynuK
Offline
Зарегистрирован: 05.02.2017

подключил кнопки кстати так http://studrobots.ru/wp-content/uploads/2016/08/connection-768x562.jpg

Logik
Offline
Зарегистрирован: 05.08.2014

TynuK пишет:

да понял что херню написал, но интересно возможно ли?

невозможно. скобка не закрыта.

TynuK
Offline
Зарегистрирован: 05.02.2017

да все скобки закрыты

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

Jeka_M пишет:

кнопка не может "отключаться"

Может. Раньше были лифты с такими черными прямоугольными кнопками этажей (внутри кабины). Дак вот,  нажимаешь на этаж  - она прилипает в нажатом положении. Приезжаешь на этот этаж - отпрыгивает. 

Logik
Offline
Зарегистрирован: 05.08.2014

И сейчас такие есть, на смесителях в общественных туалетах ставят. Она залипает после нажатия и отлипает через какоето время. И она похоже аналоговая.

Logik
Offline
Зарегистрирован: 05.08.2014

TynuK пишет:

да все скобки закрыты

 

нифига не закрыта, та которая за ифом сразу.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

TynuK пишет:

да понял что херню написал, но интересно возможно ли?

"Кто вы по национальности? - Да. А вы? - Нет. - А шо так?" :)

TynuK
Offline
Зарегистрирован: 05.02.2017

да там  пример и скобку просто не поставил,а так закрыты все они

 

TynuK
Offline
Зарегистрирован: 05.02.2017

да причем здесь национальность то?

 я вас не понимаю

TynuK
Offline
Зарегистрирован: 05.02.2017

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

кто ни будь вообще пытался так сделать?

uragan
Offline
Зарегистрирован: 23.02.2015

TynuK пишет:

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

кто ни будь вообще пытался так сделать?

Какая проблема сделать это программным способом?

TynuK
Offline
Зарегистрирован: 05.02.2017

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

 

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

В вашем случае разницы нет куда подкидывать кнопки.

* изучайте http://webstrannik.ru/img/arduino/Arduino_UNO_board.png и http://webstrannik.ru/img/arduino/Arduino_ProMini_board.png или распечатайте для большей наглядности.

TynuK
Offline
Зарегистрирован: 05.02.2017

спасибо, но куда подключать я знаю, и как подключить я уже знаю, а разница есть так как портов не хватает то 4 надо подключить к аналоговому входу я это уже сделал

 

TynuK
Offline
Зарегистрирован: 05.02.2017
 
int sensorValue = analogRead(A0); //кнопки
Serial.println (sensorValue);
Serial.print ("sensor");
     
  if (sensorValue <= 0) {
    digitalWrite(RELAY_FASE, LOW);// выключаем
    digitalWrite(RELAY_UP, LOW);// выключаем
    digitalWrite(RELAY_LEFT, LOW); // выключаем 
    digitalWrite(RELAY_DOWN, LOW);   // выключаем 
    digitalWrite(RELAY_RIGHT, LOW); // выключаем 
  }
 if (digitalRead( table_up) == LOW) {
 Serial.print(  table_up);
 Serial.print (")1 relay   (");
  digitalWrite(RELAY_FASE, LOW);
    digitalWrite(RELAY_UP, LOW);
 }
 if (digitalRead(tab_down) == LOW) {
 Serial.print(  tab_down);
  Serial.print (")2 relay   (");
  digitalWrite(RELAY_FASE, LOW);
    digitalWrite(RELAY_LEFT, LOW);
 }
  
if (digitalRead(table_down) == LOW) {
 Serial.print(  table_down);
 Serial.print (")3 relay   (");
  digitalWrite(RELAY_FASE, LOW);
    digitalWrite(RELAY_DOWN, LOW);
 }  
 if (digitalRead(tab_up) == LOW) {
 Serial.print(   tab_up);
 Serial.print (")4 relay  (");
digitalWrite(RELAY_FASE, LOW);
    digitalWrite(RELAY_RIGHT, LOW);
 }  
  
  if (sensorValue >= 399 && sensorValue <= 410 && digitalRead( table_up) == HIGH) {
    Serial.println(sensorValue);
    Serial.println("RELAY UP         ");
    digitalWrite(RELAY_FASE, HIGH);
    digitalWrite(RELAY_UP, HIGH);
  }
  if (sensorValue >= 799 && sensorValue <= 810 && digitalRead(tab_down) == HIGH) {
    Serial.println(sensorValue);
    Serial.println("RELAY LEFT        ");
    digitalWrite(RELAY_FASE, HIGH);
    digitalWrite(RELAY_LEFT, HIGH);
  }
  
  if (sensorValue >= 299 && sensorValue <= 320 && digitalRead(table_down) == HIGH) {
    Serial.println(sensorValue);
    Serial.println("RELAY DOWN     ");
   digitalWrite(RELAY_FASE, HIGH);
    digitalWrite(RELAY_DOWN, HIGH);
  }
 
  if (sensorValue >= 100 && sensorValue <= 130 && digitalRead(tab_up) == HIGH) {
    Serial.println(sensorValue);
    Serial.println("DELAY RIGHT   ");
    digitalWrite(RELAY_FASE, HIGH); 
    digitalWrite(RELAY_RIGHT, HIGH);
  }

 

TynuK
Offline
Зарегистрирован: 05.02.2017

сейчас вот так,но хотелось по другому чтоб было

T.Rook
Offline
Зарегистрирован: 05.03.2016

TynuK пишет:

сейчас вот так,но хотелось по другому чтоб было

Давайте уточним, правильно ли я Вас понимаю:

1. Если: нажата кнопка А1 (вход А0,диапазон  sensorValue 399...410), то: 
1.1 Если: не нажата кнопка table_Up(digitalRead(table_Up)==HIGH) , то: включаем relay_up (set high)
1.2 Если: нажата table_Up , то: выключаем relay_up

2. Елси кнопка А1 не нажата, то : выключаем relay_up

Это испчерпывающая логика работы одной пары кнопок?

3. Вы в курсе что не сможете определить одновременное нажатие "аналоговых" кнопок на А0?

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

распиши сначала логику работы на листочке, типа 

ЕСЛИ (НажатаКнопкаВправо && МожноЕхатьВправо) ТО ЕдемВправо;

ЕСЛИ (НажатПравыйКонцевик) ТО МожноЕхатьВправо = Нельзя; 

и т.д. по каждому состоянию. Учти, что когда едешь вправо, надо разрешать МожноЕхатьВлево.

 

TynuK
Offline
Зарегистрирован: 05.02.2017

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

но сделать хочу по другому, а именно отключать концевиком ( кнопкой) именно опрос кнопки на a0 которую нажали

TynuK
Offline
Зарегистрирован: 05.02.2017

да логика в порядке в таком виде все работает

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

В #11 Вам дали решение вашей задачи! Используйте!

T.Rook
Offline
Зарегистрирован: 05.03.2016

TynuK пишет:

но сделать хочу по другому, а именно отключать концевиком ( кнопкой) именно опрос кнопки на a0 которую нажали

Простите меня за непонятливость, но не пойму что Вас не устраивает в предложенных решениях.

Ибо "отключать опрос кнопки" :

- программно = игнорировать ее состояние, что и было Вам предложено JekaM используя "составное" условие;

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

TynuK
Offline
Зарегистрирован: 05.02.2017
TynuK
Offline
Зарегистрирован: 05.02.2017

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

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Млять... Расходимся мужики, это безнадёжно...

T.Rook
Offline
Зарегистрирован: 05.03.2016

TynuK пишет:

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

уже просто интересно: когда Вы пишете "отключать кнопку подключенную к аналоговому..." Вы что имеете ввиду? объясните другими словами.

TynuK
Offline
Зарегистрирован: 05.02.2017

именно опрос кнопки на a0

TynuK
Offline
Зарегистрирован: 05.02.2017

есть 4 кнопки (а1,а2,а3,а4)  на аналоговом входе а0, так же 4 подключенны к цифровым входам (1,2,3,4), суть такая если нажать и держать а1 то что то начинает двигаться нажимая в конце кнопку 1 (концевик допустим), реально ли так сделать чтоб нажимая кнопку 1 отключался опрос имеено кнопки а1?  надеюсь так болеее понятно что я имею ввиду?

T.Rook
Offline
Зарегистрирован: 05.03.2016

TynuK пишет:

именно опрос кнопки на a0

Но на А0 вивсит 4 кнопки. И опрос их всех идет одной командой. А потом анализ состояния какая кнопа нажата. Так что опрос придется оставить.

T.Rook
Offline
Зарегистрирован: 05.03.2016

TynuK пишет:

есть 4 кнопки (а1,а2,а3,а4)  на аналоговом входе а0, так же 4 подключенны к цифровым входам (1,2,3,4), суть такая если нажать и держать а1 то что то начинает двигаться нажимая в конце кнопку 1 (концевик допустим), реально ли так сделать чтоб нажимая кнопку 1 отключался опрос имеено кнопки а1?  надеюсь так болеее понятно что я имею ввиду?

к сожалению не более :( можете в своем объяснении не упоминать слово "опрос"?

TynuK
Offline
Зарегистрирован: 05.02.2017

возможно подключить несколько кнопок на порт а0, так тоб опрос шол каждой из них? тоесть если нажать 2 кнопки то чтоб срабатывали нажатые ,а не так что одну нажал и остальные не реагируют, как щас у меня сделано

T.Rook
Offline
Зарегистрирован: 05.03.2016

TynuK пишет:

возможно подключить несколько кнопок на порт а0, так тоб опрос шол каждой из них? тоесть если нажать 2 кнопки то чтоб срабатывали нажатые ,а не так что одну нажал и остальные не реагируют, как щас у меня сделано

Блииииин. Ну почему я не послушался Jeka_M???!!!!!!

#34 Вы утверждали что пнимаете про одновременное нажатие кноп на аналоговом порту.... :(((((

Хотите независимое нажатие и не хватает пинов - используйте матрицу кнопок и динамический опрос. ну или повесьте кучу кнопок на I2C

Хотите "извращаься" с аналоговыми уровнями - подключайте на А0 кноки с разныит сопротивлениями в параллель и считайте параллельное подключение резисторов. Будет независимо и на одном пине.

TynuK
Offline
Зарегистрирован: 05.02.2017

спасибо, а так хотелось, ну ладно  пусть будет так как есть, можно еще вопрос? 

как бодобрать наминалы резисторов? собрал на старой понельке от двд) работает даже дребезга не было, но теперь надо перенести все , а там проводов по 2 метра , а то и больше

суть такая там сделанно так пин а0 с GND - 350 ом, 1 кнопка - 400 ом, 2 кнопка-860 ом, 3 кнопка 1000 ом, 4 кнопка 2.5 кило-ома, таких же нет да и не пойдут же раз там проводов больше?

TynuK
Offline
Зарегистрирован: 05.02.2017

только без паники ;), я понимаю , но реально же сделать так? если реально то можно же сделать то что я хочу?

T.Rook
Offline
Зарегистрирован: 05.03.2016

TynuK пишет:

спасибо, а так хотелось, ну ладно  пусть будет так как есть, можно еще вопрос? 

как бодобрать наминалы резисторов? собрал на старой понельке от двд) работает даже дребезга не было, но теперь надо перенести все , а там проводов по 2 метра , а то и больше

суть такая там сделанно так пин а0 с GND - 350 ом, 1 кнопка - 400 ом, 2 кнопка-860 ом, 3 кнопка 1000 ом, 4 кнопка 2.5 кило-ома, таких же нет да и не пойдут же раз там проводов больше?

Да любые резисторы обеспечивающие разные уровни напряжения на А0. Нажал кнопку - посмотрел уровень на А0 - определил интервал срабатывания - прописал в коде.

КОДА.