Как изменить переменную при нажатии кнопки, подключенной к контакту 2

Привет, я пишу код, в котором я должен переключать переменную, называемую toggle, с 0 на 1 и на 0.... каждый раз, когда нажимается кнопка (кнопка находится на 2-контактном разъеме). Я немного растерялся, так как я новичок в arduino, мне нужна помощь. Спасибо

, 👍0


2 ответа


2

Перейдите здесь --> Встроенные примеры. Прочтите примеры для кнопок, подавления и подтягивания цифровых входов. На мой взгляд, Digital Input Pullup — лучший из этих трех, но прочитайте их все.

Эти 3 являются ключевыми.

Кроме того, я написал библиотеку buttonReader (для устранения дребезга) здесь.

Похоже, вы новичок, поэтому ознакомьтесь с учебными пособиями Adafruit здесь.

И, наконец, я собрал ссылки на все свои знания внизу статьи здесь.

,

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


2

Вам нужно обнаружить переход. То есть либо:

  • Он был закрыт, а теперь открыт.

Или:

  • Он был открыт, а теперь закрыт.

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

const byte switchPin = 8;
byte oldSwitchState = HIGH;  // предположим, что переключатель разомкнут из-за подтягивающего резистора
bool toggle;

void setup ()
  {
  pinMode (switchPin, INPUT_PULLUP);
  }  // конец настройки

void loop ()
  {
  // смотрим, разомкнут или замкнут переключатель
  byte switchState = digitalRead (switchPin);

  // изменилось ли оно с прошлого раза?
  if (switchState != oldSwitchState)
    {
    oldSwitchState =  switchState;  // запомнить на следующий раз
    toggle = !toggle;   // переключаем переменную
    delay (10);         // отменить дребезг
    }  // конец изменения состояния

  // другой код здесь ...

  }  // конец цикла

Для получения дополнительной информации см. мой пост о переключателях.

,