- Лоботрясы

Поиск
Перейти к контенту

Главное меню:

Библиотеки для AVR

Читать в Яндекс.Подписках



    Библиотека сенсорной клавиатуры для микроконтроллеров AVR
Просмотров: 2485

    Основным средством ввода данных в микроконтроллерную поделку остаются, бесспорно, механические кнопки. Но иногда дизайн прибора требует лаконичного и строгого внешнего вида, а вид гордо торчащих кнопок не очень импонирует вашему девайсу.
    И тут на помощь могут прийти простые в изготовлении и неприхотливые сенсорные кнопки, свою библиотеку работы с которыми я предлагаю ниже. Ну, если быть честным, то и полностью моей её назвать нельзя, т.к. основана она, по большей части, на коде от известного в микроконтроллерных кругах мистера Chan(а). Однако, мистер Chan на своём ресурсе показывает лишь пример возможного применения и наглядной работы сенсорной клавиатуры, представив результат своих трудов для всеобщего пользования, мной же представлена уже вполне самостоятельная библиотека, в которой была повышена помехоустойчивость и реализовано надёжное определение нажатия и отпускания сенсорной кнопки, и которую можно включать в разрабатываемый проект как самостоятельную библиотеку.
    Принцип работы емкостной клавиатуры, я думаю, объяснять не стоит, его не описал, похоже, только мёртвый (не будь лентяем
погугли!)
    Благодаря своей простоте изготовления, сенсорные кнопки (или клавиатуры) можно выполнять любой конфигурации. Желательно только, для лучшей чувствительности таких кнопок, чтобы расстояние между металлической площадкой, представляющей собой сенсор, и пальцем было не более 1,5 мм. Пример выполнения сенсорной клавиатуры можно посмотреть в моей статье здесь!

    Оччень сложная схема подключения сенсорной кнопки к порту микроконтроллера:

    Теперь о библиотеке поподробнее:
    Данная библиотека позволяет подключать к микроконтроллеру до 8 сенсорных кнопок, только подключаться данные кнопки должны, начиная с нулевого порта микроконтроллера!

    В файле sens.h необходимо определить порт, к которому будут подключены сенсорные кнопки. Изначально, в моей библиотеке:
#define TOUCH_PORT  PORTB
#define TOUCH_DDR   DDRB
#define TOUCH_PIN   PINB

Основные функции библиотеки:

//===============================================================
//Инициализация входов микроконтроллера
//===============================================================
void TOUCH_Init (void);

//===============================================================
//Функция подсчёта времени заряда ёмкости сенсорной кнопки. Не является пользовательской!
//===============================================================

int TOUCH_Buttons (char channel);

//===============================================================
//Функция подсчёта времени заряда ёмкости сенсорных кнопок в относительных единицах
//===============================================================

void TOUCH_Scan (int *array);

//===============================================================
// Функция опроса сенсорных кнопок и определение нажатой кнопки
// Вставляется в основном цикле программы
//===============================================================

void TOUCH_CompareKey (void);

//===============================================================
//Функция возврата кода нажатой сенсорной кнопки
//===============================================================

char TOUCH_GetKey (void);

    Нюанс: перед основным циклом while (1) программы необходимо определить опорное время заряда ёмкости сенсорных кнопок, вставив функцию TOUCH_Scan (RefVal);

    Пример применения моей библиотеки в железе описан в моей статье Сенсорный модуль на AVR.

    Скачать:
Библиотека сенсорной клавиатуры

Опубликовано 28.09.2014
© Igoryosha, 2014

 
 
Назад к содержимому | Назад к главному меню