Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

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

Ср фев 21, 2024 23:35:50

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

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

В современной реализации думаю надо перед кнопками ставить ключ вроде uln2003 который будет чётко коммутировать нужное сопротивление. Тогда сопротивление кнопки не будет влиять. Хотя думаю что вход ключа надо тоже КМОП, чтоб высокое сопротивление подыхающей кнопки тоже срабатывало.
Надо проводить опыт при каком сопротивлении такой ключ сработает.

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

Ср фев 21, 2024 23:52:50

В современной реализации думаю надо перед кнопками ставить ключ вроде uln2003 который будет чётко коммутировать нужное сопротивление.

Тогда чего бы не поставить отдельный чип контроллера клавиатуры?

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

Чт фев 22, 2024 08:49:04

Пример.
Код:
#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;
}

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

Вс мар 03, 2024 19:03:34

Тогда чего бы не поставить отдельный чип контроллера клавиатуры?
отдельный чип нужно нагуглить и купить, я о таких даже не слышал.
Хотя это наверно вроде той 16 ногой которая LED экраном в ТВ приставках управляет. Так нафига эта матрица если 2003 наковырять можно
Ответить