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

Резистивную клавиатуру на Arduino можно применить для расширения функций основной клавиатуры на компьютере, так и для управления с клавиатуры практический любым Android устройством имеющим OTG интерфейс.

Аппаратная часть

Для реализации данного проекта нам понадобится любой контроллер Arduino на чипе ATmega32u4, например Arduino Leonardo. Этот микроконтроллер позволяет делать HID устройства.

Подойдёт и более компактный вариант от RobotClass — Лео-микро ROC, подходящий для встраиваемой установки. Например, в автомобиль — для управления планшетом. Так же будет нужен набор резисторов различного номинала (к примеру 10 кОм) и набор кнопок.

В корзину
В корзину
В корзину
В корзину
В корзину

Количество кнопок и резисторов зависит от того, сколько требуется сделать кнопок.

Программа и схема

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

После сборки схемы получаем

После подключаем контроллер к компьютеру и загружаем в плату следующий скетч

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; // если val меньше 350 третья кнопка
        else if (val < 500) return 4; // если val меньше 500 четвертая кнопка
        else return 0;  
}
void setup() {
    Serial.begin(9600);
}
void loop() {
    int sensorValue = analogRead(A0); //считываем кнопку
        Serial.print(key()); // выводим номер кнопки в serial
        Serial.print(" ");
        Serial.println(sensorValue);
        delay(1);       
}

После того, как загрузили скетч, открываем «Монитор порта» и нажимая на кнопки  видим их значения в мониторе порта .

Программа для управления Android устройством на Ардуино

Теперь попробуем сделать клавиатуру для управления планшетом или телефоном на базе Android. Схема устройства остается та же, что и была. Но теперь контроллер будет распознаваться устройством как USB HID, в нашем случае клавиатурой.

Загружаем следующий скетч:

int analogPin=0; 
int data; 
void setup(){ 
    Keyboard.begin(); 
    Serial.begin(9600); 
} 
void loop(){ 
    data=analogRead(analogPin); //чтение нажатой кнопки 
    Serial.println(data); // вывод кода нажатой кнопки в монитор порта 
    if (data==614)  Keyboard.write(176); //ENTER код 614 
    if (data==122)  Keyboard.write(216); //стрелка влево 
    if (data==165)  Keyboard.write(215); //стрелка вправо 
    if (data==216)  Keyboard.write(218); //стрелка вверх 
    if (data==276)  Keyboard.write(217); //стрелка вниз 
    delay(100); 
}

Теперь Android устройство распознает нашу клавиатуру, и мы можем управлять, например, медиаплеером.

Заключение

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


Изменено: