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

Навигация

Реклама


Популярное

Какие ванны самые лучшие — стальные, чугунные или акриловые? Каждый человек выбирает ванну по...

  Соберите список подписчиков с помощью текстовых сообщений и кодов быстрого ответа. Клиенты,...

  Люди любят свои смартфоны. Идете ли вы по улице или в торговом центре, сидите в кафе или в...

  Для большинства людей частью привлекательности владения домом является возможность...

Алюминиевые жалюзи Данный вариант жалюзи ценится своей практичностью, долгим сроком службы, а также...

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

Как сделать самому резистивную клавиатуру для 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:
Комментарий: