Как подключить кнопку Big Dome Button к Arduino

Я новичок в arduino, и для проекта я хочу использовать большую куполообразную кнопку, которая при нажатии будет считать, сколько раз было нажато. Она использует 12 вольт. Эта кнопка https://www.sparkfun.com/products/9181

, 👍0

Обсуждение

коммутатору не нужно напряжение. 12 В для светодиодного индикатора. Вы можете подключить микропереключатель, как и любую кнопку, @Juraj

Я просмотрел их демонстрационное видео https://www.sparkfun.com/news/874 (@3:05) и не нашел ничего о 12-вольтовом светодиодном драйвере. Если у вас уже есть эта кнопка, просто открутите ее и посмотрите на светодиод. Подсчет и отображение очков не имеют ничего общего с аппаратной частью кнопок., @DataFiddler

Дополнительная информация от sparkfun: > «Они используют светодиод на 12 В для освещения, но мы обнаружили, что он отлично работает и при напряжении 5 В, хотя и немного тусклее». Читаю: откручивай, ищи резистор или замени светодиод на настоящий и свой резистор. За пластиковый мусор берут 12$, за "электронику" - бесплатно., @DataFiddler


1 ответ


Лучший ответ:

1

Как уже говорили другие, 12 В питают внутренний светодиод коммутатора.


ИЗМЕНИТЬ:

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

Конец редактирования:


Если вы хотите, чтобы переключатель загорелся, подключите вход V к 12 В, или, если вы подключите его к 5 В, он будет тусклым, но, возможно, все еще светится. (У вас наверняка есть контакт 5 В на плате Arduino. Использование этого означает, что вам не нужен отдельный источник питания 5 В.)

Теперь подключите один провод переключателя к цифровому входу, а другой к земле.

Затем установите контакт переключателя в режим INPUT_PULLUP. Теперь ваш переключатель будет отображаться как ВЫСОКИЙ, пока он не будет нажат, затем он будет отображаться как НИЗКИЙ.

создайте переменную в верхней части кода с именем buttonState:

byte buttonState = HIGH;

Также определите беззнаковую длинную переменную nextReadMillis:

unsigned long nextReadMillis = 0;

и переменная pressCount:

unsigned int pressCount = 0;

И определите debounceTime:

#define debounceTime 50

В своем цикле сделайте что-то вроде этого:

void loop() {
    //Получить новый millis(значение)
    unsigned long newMillis = millis();

    // смотрим на новое значение кнопки, только если прошло достаточно времени.
    if (newMillis >= nextReadMillis) {
       byte newButtonState = digitalRead(buttonPin);

       // Делать что-то, только если состояние кнопки изменилось
       if (buttonState != newButtonState) {
          buttonState = newButtonState;
          nextReadMillis = newMillis + debounceTime;
          //Если кнопка сейчас находится в нажатом (LOW) состоянии, увеличиваем счетчик
          if (buttonState == LOW) {
              pressCount++;
          }
       }
    }
}

Это псевдокод. Вероятно, в нем есть синтаксические ошибки. Это не предназначено для копирования/вставки. Используйте его в качестве руководства для вашего проекта.

Код, использующий millis(), является версией "программного подавления дребезга." Электрические переключатели склонны к «дрожанию». или "отскок" между их включенным и выключенным состояниями очень быстро при первом нажатии/отпускании. Проверяя изменения состояния только после небольшой задержки, вы игнорируете дрожание показаний.

Обратите внимание: если вы хотите, чтобы светодиод загорался только при нажатии кнопки, вы можете управлять им с помощью другого цифрового контакта. Вы бы назначили другой вывод для управления выходом светодиода, установили этот вывод в режим OUTPUT и переключили вывод в зависимости от состояния кнопки внутри тела оператора if (buttonState != newButtonState) if.

Если ваш светодиод потребляет ≤20 мА при напряжении 5 В, вы можете подключить его напрямую к выходному контакту. Если он потребляет больше, вам понадобится транзистор, чтобы управлять им, чтобы вы не потребляли слишком много тока с выходного контакта и не сожгли его. Однако подключение драйвера транзистора выходит за рамки этой статьи.

,