цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Как с помощью одного аналогового вывода Arduino считывать состояния большого количества кнопок



Как с помощью одного аналогового вывода Arduino считывать состояния большого количества кнопок

Автор: Mike(admin) от 23-07-2022, 03:55

Из данного проекта мы узнаем, считывать с помощью одной аналоговой линии Arduino состояние нескольких кнопок. Мы будем использовать 12 кнопок и поставим между ними резисторы с одинаковым сопротивлением.


Как с помощью одного аналогового вывода Arduino считывать состояния большого количества кнопок

Суть данного метода заключается в том, чтобы проверять значения напряжения на кнопках, используя функцию AnalogRead в Arduino. Наша схема, состоящая из 12 кнопок и резисторов выглядит следующим образом.


Как с помощью одного аналогового вывода Arduino считывать состояния большого количества кнопок

Функция analogRead в Arduino IDE позволяет считывать напряжение в диапазоне от 0 до 5 В, переводя его в диапазон бит от 0 до 1023.


Итак, когда ни одна кнопка не нажата, мы получим значение 1023. Когда кнопка 1 будет нажата, мы получим 0. Когда кнопка 2 будет нажата, мы получим 512. Когда кнопка 3 будет нажата, мы получим 682. Когда кнопка 4 будет нажата, мы получим 767. Когда кнопка 5 нажат, мы получим 819. И так далее.


Код программы Arduino довольно прост и приведен далее.



int pin = A0;

void setup()
{
  pinMode (pin, INPUT);
  Serial.begin (9600);
}

void loop()
{
  int volt = analogRead (pin);
  Serial.println(volt);
  if (volt >= 0 && volt <= 2)
  {
    Serial.println("1");
  }
  if (volt >= 510 && volt <= 514)
  {
    Serial.println("2");
  }
  if (volt >= 680 && volt <= 684)
  {
    Serial.println("3");
  }
  if (volt >= 765 && volt <= 769)
  {
    Serial.println("4");
  }
  if (volt >= 817 && volt <= 821)
  {
    Serial.println("5");
  }
  if (volt >= 851 && volt <= 855)
  {
    Serial.println("6");
  }
  if (volt >= 875 && volt <= 879)
  {
    Serial.println("7");
  }
  if (volt >= 893 && volt <= 897)
  {
    Serial.println("8");
  }
  if (volt >= 908 && volt <= 912)
  {
    Serial.println("9");
  }
  if (volt >= 919 && volt <= 923)
  {
    Serial.println("10");
  }
  if (volt >= 929 && volt <= 933)
  {
    Serial.println("11");
  }
  if (volt >= 936 && volt <= 940)
  {
    Serial.println("12");
  }
  delay (500);
}



© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий