Использование аналогового входа для чтения кнопки

Я работаю над проектом, в котором использую множество контактов Arduino; У меня закончилось большинство контактов, и мне нужно прочитать значение кнопки.

Можно ли прочитать значение переключателя в аналоговых пинах на плате??

Если да, то как это реализовать?

, 👍2


1 ответ


1

Можно ли прочитать значение переключателя в аналоге в пинах на доске??

Как говорят другие ответы, вы можете использовать digitalRead на большинстве аналоговых контактов. Но чтобы ответить на вопрос: да, вы можете читать аналоговый вход, что полезно для таких контактов, как A6/A7, которые нельзя использовать в качестве цифровых контактов.

Вы должны соединить контакт с подтягивающим резистором — для контактов Arduino A0-A5 (в зависимости от платы, я имею в виду Nano) это можно сделать внутренне, используя:

pinMode(5, INPUT_PULLUP); // Включаем внутренний подтягивающий резистор на контакте 5

Если вы работаете с контактами A6/A7, вы не можете получить доступ к внутреннему подтягивающему резистору, поэтому вам необходимо добавить свой собственный, чтобы предотвратить плавающий вход. Резистор номиналом 10 КБ должен ставиться между входным контактом и VCC.

Наконец, пример чтения входных данных:

const int buttonPin = A7;     // номер контакта кнопки
const int ledPin =  13;      // номер контакта светодиода

void loop() {
  // читаем состояние значения кнопки:
  buttonState = analogRead(buttonPin);

  Serial.println(buttonState);

  // проверяем, нажата ли кнопка. Если это так, то состояние кнопки ВЫСОКОЕ:
  if (buttonState > 512) {
    // включаем светодиод:
    digitalWrite(ledPin, HIGH);
  } else {
    // выключаем светодиод:
    digitalWrite(ledPin, LOW);
  }
}
,