Эта библиотека позволяет подключить энкодер KY-040. Дополнительную информацию можно найти в моём блоге itworkclub.ru

Dependents:   STM32_Encoder TFT_Touch_Menu_Encoder Encoder_rotativo TFT_Touch_Menu_Touch

Committer:
zelmic
Date:
Wed Jun 20 15:21:16 2018 +0000
Revision:
0:e1a3b380b0d6
ver. 1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zelmic 0:e1a3b380b0d6 1 /*
zelmic 0:e1a3b380b0d6 2 * Автор - Железняков Андрей
zelmic 0:e1a3b380b0d6 3 * Сайт - itworkclub.ru
zelmic 0:e1a3b380b0d6 4 * Данный класс описывает энкодер с кнопкой KY-040
zelmic 0:e1a3b380b0d6 5 * Обработка вращения и нажатий происходит с помощью прерываний.
zelmic 0:e1a3b380b0d6 6 * При вращении энкодера меняется состояние переменной State
zelmic 0:e1a3b380b0d6 7 * в ту или иную сторону. Значения переменной State ограничены заданным
zelmic 0:e1a3b380b0d6 8 * диапазоном, например, от 0 до 100 или 0т 300 до 500. Диапазон задается
zelmic 0:e1a3b380b0d6 9 * функцией setRange. По умолчанию диапазон от 0 до 100.
zelmic 0:e1a3b380b0d6 10 * Узнать текущее значение энкодера можно с помощью функции getState();
zelmic 0:e1a3b380b0d6 11 * Нажата ли кнопка с помощью функции getButtonState();
zelmic 0:e1a3b380b0d6 12 * К энкодеру припаяны два дополнительных конденсатора по 1000пФ для устранения
zelmic 0:e1a3b380b0d6 13 * дребезга: один между GND и CLK, второй между GND и DT. Если этих конденсаторов
zelmic 0:e1a3b380b0d6 14 * нет, то необходимо раскомментировать задержку в функции encode. Так же
zelmic 0:e1a3b380b0d6 15 * необохдимо проверить запаян ли подтягивающий резистор 10кОм на кнопку SW
zelmic 0:e1a3b380b0d6 16 * Его необходимо припаять.
zelmic 0:e1a3b380b0d6 17 */
zelmic 0:e1a3b380b0d6 18
zelmic 0:e1a3b380b0d6 19 #ifndef Encoder_H
zelmic 0:e1a3b380b0d6 20 #define Encoder_H
zelmic 0:e1a3b380b0d6 21
zelmic 0:e1a3b380b0d6 22
zelmic 0:e1a3b380b0d6 23 #include "mbed.h"
zelmic 0:e1a3b380b0d6 24
zelmic 0:e1a3b380b0d6 25 class EncoderAli
zelmic 0:e1a3b380b0d6 26 {
zelmic 0:e1a3b380b0d6 27 public:
zelmic 0:e1a3b380b0d6 28 // В конструкторе задаем пины, к которым подключен энкодер
zelmic 0:e1a3b380b0d6 29 EncoderAli(PinName DT,PinName CLK1,PinName SW);
zelmic 0:e1a3b380b0d6 30
zelmic 0:e1a3b380b0d6 31 int getState(); // возвращает положение энкодера
zelmic 0:e1a3b380b0d6 32 void setRange(int minValue,int maxValue);// задает диапазон
zelmic 0:e1a3b380b0d6 33 bool getButtonState();// true - кнопка нажата, false - отжата
zelmic 0:e1a3b380b0d6 34 private:
zelmic 0:e1a3b380b0d6 35
zelmic 0:e1a3b380b0d6 36 int State; // положение энкодера
zelmic 0:e1a3b380b0d6 37 bool work; // флаг, который поднимается, когда идет обработка прерывания
zelmic 0:e1a3b380b0d6 38 // и опускается по заверщении прерывания.
zelmic 0:e1a3b380b0d6 39 int minValue_; // минимальное значение энкодера
zelmic 0:e1a3b380b0d6 40 int maxValue_; // максимальное значение энкодера
zelmic 0:e1a3b380b0d6 41 bool button; //true - кнопка нажата, false - отжата
zelmic 0:e1a3b380b0d6 42
zelmic 0:e1a3b380b0d6 43 DigitalIn DT_;
zelmic 0:e1a3b380b0d6 44 InterruptIn CLK1_;
zelmic 0:e1a3b380b0d6 45 InterruptIn SW_;
zelmic 0:e1a3b380b0d6 46
zelmic 0:e1a3b380b0d6 47 void encode(void); //обработчик вызывается при повороте энкодера
zelmic 0:e1a3b380b0d6 48 void buttonPress(void); //обработчик вызывается при нажатии кнопки
zelmic 0:e1a3b380b0d6 49 void buttonUp(void); // обработчик вызывается при отпускании кнопки
zelmic 0:e1a3b380b0d6 50
zelmic 0:e1a3b380b0d6 51 };
zelmic 0:e1a3b380b0d6 52
zelmic 0:e1a3b380b0d6 53 #endif