Несколько кнопок на один пин

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Друг Кота
Сообщения: 7722
Зарегистрирован: Вс июл 24, 2011 11:38:09

Сообщение 74LS00 »

Надо все варианты кода, какойто будет быстрее. Пёс его знает как этот ардуино работает.

То что для кучи кнопок надо всего 1 АЦП это удобно, но если кнопка будет плохо работать то результат будет какой угодно. Это на телевизорах так практиковали.

В современной реализации думаю надо перед кнопками ставить ключ вроде uln2003 который будет чётко коммутировать нужное сопротивление. Тогда сопротивление кнопки не будет влиять. Хотя думаю что вход ключа надо тоже КМОП, чтоб высокое сопротивление подыхающей кнопки тоже срабатывало.
Надо проводить опыт при каком сопротивлении такой ключ сработает.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6603
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="74LS00",url="/forum/viewtopic.php?p=4546050#p4546050"]В современной реализации думаю надо перед кнопками ставить ключ вроде uln2003 который будет чётко коммутировать нужное сопротивление.[/uquote]
Тогда чего бы не поставить отдельный чип контроллера клавиатуры?
Астролябия-сама меряет, было бы что мерять!!!
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1430
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Пример.

Код: Выделить всё

#include "akey.h"


static uint8_t getKey()
{
  uint16_t adc_key = ain(KEY_PIN);

  if (adc_key < RIGHT_VAL)  return RIGHT_CODE;
  if (adc_key < UP_VAL)     return UP_CODE;
  if (adc_key < DOWN_VAL)   return DOWN_CODE;
  if (adc_key < LEFT_VAL)   return LEFT_CODE;
  if (adc_key < SELECT_VAL) return SELECT_CODE;
  if (adc_key > NONE_VAL)   return NONE_CODE;
  return ERROR_CODE;
}


uint8_t keyExe()
{
  static uint8_t old_key;
  static uint16_t debounce_timer;

  uint8_t key = getKey();
  if (old_key != key) {
    old_key != key;
    debounce_timer = ms2sys(DEBOUNCE_TIME);
  }
  else if (debounce_timer && !--debounce_timer)
    return key;
  return 0;
}

Друг Кота
Сообщения: 7722
Зарегистрирован: Вс июл 24, 2011 11:38:09

Сообщение 74LS00 »

[uquote="Asmodey",url="/forum/viewtopic.php?p=4546055#p4546055"]Тогда чего бы не поставить отдельный чип контроллера клавиатуры?[/uquote]отдельный чип нужно нагуглить и купить, я о таких даже не слышал.
Хотя это наверно вроде той 16 ногой которая LED экраном в ТВ приставках управляет. Так нафига эта матрица если 2003 наковырять можно
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «Arduino»