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

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

Функция 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