Наверх
Проекты на Arduino

Реклама


Популярное

Среди белорусских исполнителей, которые прославились далеко за пределами своей Родины, особое место...

Резистивная клавиатура для arduinoСегодня про так называемую резистивную клавиатуру или как...

Впервые стартует уникальный бизнес-форум «Avto.Pro Инновации 2016». Конференция расставит все точки...

Изначально плоттер предназначался для печати точных инженерных и архитектурных чертежей. Почему?...

Русский хакер отомстил негодяям, внедрившим вредный код в компьютер его родителей, информирует...

» » Как сделать самому резистивную клавиатуру для arduino

Проголосовало: 1

Как сделать самому резистивную клавиатуру для arduino

Категория: Arduino

Сегодня про так называемую резистивную клавиатуру или как подключить много кнопок на один аналоговый вход. Для этого был собран вот такой модуль, на котором 5 кнопок и несколько SMD резисторов, а так же 3 штырька для питания и выхода.

Резистивная клавиатура для arduinoРезистивная клавиатура для arduinoРезистивная клавиатура для arduinoРезистивная клавиатура для arduino

 

В общем как это все устроено.

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

Делитель напряжения

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

Схема первого варианта резистивной клавиатуры для arduino

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

Схема второго варианта резистивной клавиатуры для arduino


Это даже можно продемонстрировать. Ниже пример, который отправляет значение в serial которое считывает функцией analogread на выходе А0 к которому подключена клавиатура. Когда ничего не нажато в мониторе порта будет 1023, если надавить на кнопку это значение будет отличаться и зависеть от нажатой кнопки.

Осталось только различать эти значения в коде без условия if здесь не обойтись, а лучше вообще это вынести в отдельную функцию. К примеру эта функция будет key() и возвращает она байт

byte key(){  
  int val = analogRead(0); // считываем значение с аналогового входа в переменную val
    if (val < 50) return 1; // сверяем переменную, если val меньше 50 возвращаем 1 (первая кнопка)
    else if (val < 150) return 2; // если val меньше 150 вторая кнопка и т.д.
 
    else if (val < 350) return 5;
    else if (val < 500) return 4;
    else if (val < 800) return 3;
    else return 0;  // если ничего не подошло возвращаем 0
}

 

Дальше в цикле отправляем в serial, то что возвращает функция key

void loop() {
 int sensorValue = analogRead(A0); // считываем значения с А0. Пригодится для отладки
 Serial.print(key()); // выводим номер кнопки в serial   
 Serial.print(" ");
 Serial.println(sensorValue); // выводим значения с А0. Пригодится для отладки
 delay(1);        // задержка между считываниями для стабильности
}

 



 
Вернуться назад »

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

Имя:*
E-Mail:
Комментарий: