Просматривая в сети различные электронные модули, меня заинтересовал недорогой модуль сенсорной клавиатуры на микросхеме TTP229, и я решил приобрести его. Микросхема имеет 16 входов для подключения сенсорных электродов (кнопок), соответственно на плате модуля имеются 16 сенсорных квадратных площадок с номерами 1-16. Также на плате имеются контактные площадки для перемычек, с помощью которых можно настраивать режим работы клавиатуры. Микросхема TTP229 передает данные по двухпроводной линии, протокол связи схож с последовательным интерфейсом SPI, кроме этого имеются 8 выходных буферов, с возможностью выбора типа логического выхода. Микросхема обладает низким энергопотреблением, всего 2-9 мкА в спящем режиме.
На следующей картинке представлена схема модуля сенсорной клавиатуры:
Обвязка микросхемы минимальная, сенсорные кнопки E1-E16 подключаются непосредственно к выводам микросхемы. С помощью конденсаторов CJ0-CJ3, CJWA, CJWB можно регулировать чувствительность сенсорных кнопок, чем больше емкость конденсаторов, тем ниже чувствительность, кроме этого чувствительность зависит от размера самих кнопок. Рекомендуемая емкость конденсаторов находится в пределах 1-50 пФ.
Линии микросхемы TP0-TP7 играют двойную роль, кроме отслеживания состояния сенсорных кнопок, можно настраивать режим работы клавиатуры с помощью перемычек JP1-JP8. Если перемычка установлена, то линия микросхемы подтягивается к общему проводу через высокоомный резистор, на входе устанавливается низкий логический уровень “0”, при отсутствии перемычки высокий уровень “1”. Ниже в таблице приведены основные режимы работы:
Вывод микросхемы | Состояние вывода | Описание | |
TP0 (перемычка JP1) TP1 | TP0 | TP1 | Задействовано 8 выходных буферов: обычный логический выход, активный логический уровень – высокий. Последовательный интерфейс передачи данных: обычный логический выход, активный логический уровень – низкий. |
1 | 1 | ||
1 | 0 | Задействовано 8 выходных буферов: обычный логический выход, активный логический уровень – низкий. Последовательный интерфейс передачи данных: обычный логический выход, активный логический уровень – высокий. | |
0 | 1 | Задействовано 8 выходных буферов: выход открытый сток с подтяжкой к 1, активный логический уровень – низкий. Последовательный интерфейс передачи данных: обычный логический выход, активный логический уровень – низкий. | |
0 | 0 | Задействовано 8 выходных буферов: выход открытый сток с подтяжкой к 0, активный логический уровень – высокий. Последовательный интерфейс передачи данных: обычный логический выход, активный логический уровень – высокий. | |
TP2 (перемычка JP3) | 1 | Задействовано 8 кнопок (E1-E8) и выходные буферы | |
0 | Задействовано 16 кнопок (E1-E16) | ||
TP3 (перемычка JP4) TP4 | TP3 | TP4 | Одна группа (16 кнопок): фиксируется нажатие только одной кнопки |
1 | 1 | ||
1 | 0 | 1-я группа: E1-E4, E9-E12 – фиксация нажатия одной кнопки 2-я группа: E5-E8, E13-E16 – фиксация нажатия одной кнопки | |
0 | 1 | 1-я группа: E1-E4, E9-E12 – фиксация нажатия одной кнопки 2-я группа: E5-E8, E13-E16 – фиксация нажатия нескольких кнопок | |
0 | 0 | Одна группа (16 кнопок): фиксируется нажатие нескольких кнопок | |
TP5 (перемычка JP6) | 1 | Частота опроса кнопок в спящем режиме равна 8 Гц | |
0 | Частота опроса кнопок в спящем режиме равна 64 Гц | ||
TP6 (перемычка JP7) | 1 | Длительность опроса кнопок в спящем режиме равна 4 мс | |
0 | Длительность опроса кнопок в спящем режиме равна 2мс | ||
TP7 (перемычка JP8) | 1 | Защита от “залипания” кнопки отключена | |
0 | Защита от “залипания” кнопки включена: максимальное время 80 секунд |
Если на линии TP2 высокий логический уровень (TP2=1), то активно 8 сенсорных кнопок (на схеме E1-E8), остальные 8 линий микросхемы TP8-TP15 перенастраиваются на выход (Out1-Out8). Логический уровень на выходных линиях зависит от состояния сенсорных кнопок, 1-я кнопка соответствует выходу Out1, 2-я кнопка выходу Out2 и т.д., также данные о состоянии кнопок передаются по последовательному интерфейсу. В режиме 16 активных кнопок (TP2=0), линии микросхемы TP8-TP15 перенастраиваются на вход. В этом случае информация о состоянии кнопок передается только по последовательному интерфейсу. Таким образом, линии TP8-TP15 могут отслеживать состояние сенсорных кнопок E9-E16, или выступать в качестве выходных буферов.
Линия TP0 отвечает за тип логического выхода, значению TP0=1 соответствует обычный логический выход, если значение равно 0, то получаем выход с открытым стоком. От состояния линии TP1 зависит активный уровень выходных буферов и последовательного интерфейса. С помощью линий TP3, TP4 можно установить два режима сканирования кнопок: фиксация “нажатия” только одной кнопки либо сразу нескольких кнопок, это может быть удобно, когда необходимо отслеживать “нажатие” какой-либо комбинации кнопок. Линии TP5, TP6 отвечают за частоту и длительность сканирования кнопок в спящем режиме. В микросхеме имеется функция защиты от “залипания” кнопок, например в случае попадания на кнопку постороннего предмета, произойдет срабатывание, и если защита включена, через 80 секунд кнопка заново калибруется и возвращается в отжатое состояние. За эту функцию отвечает линия TP7.
Микросхема TTP229 автоматически переходит в спящий режим, если в течение определенного времени не было зафиксировано “нажатия” на кнопки. Кроме этого имеется функция постоянной авто-калибровки сенсорных кнопок, что позволяет микросхеме подстраиваться под изменение окружающего “емкостного” фона, и корректно фиксировать прикосновение.
На следующей картинке приведена диаграмма передачи данных по последовательному интерфейсу с временными характеристиками:
Линия SCL предназначена для тактирования внешним управляющим устройством, на линию SDO микросхема TTP229 выдает данные о состоянии кнопок. Когда микросхема фиксирует “нажатие” кнопки, она выдает на линию сигнал DV длительностью 93 мкс, который можно использовать для прерывания в микроконтроллере. Далее при наличии сигнала тактирования микросхема выдает один или два байта данных о состоянии кнопок (в зависимости от режима работы: 8 или 16 активных кнопок). Как видно полярность сигналов на линиях SCL, SDO зависит от выбора активного логического уровня. Биты D0-D15 отображают состояние кнопок E1-E16. Значение битов зависит от активного уровня, если активный уровень низкий, при “нажатии” кнопки соответствующий бит установится в 0, если кнопка отжата – 1. При высоком активном уровне все наоборот. Частота тактирования может лежать в пределах 1-512 кГц. Если сигнал тактирования отсутствует в течение 2 мс, то последовательный интерфейс возвращается в исходное состояние.
Для примера я подключил сенсорную клавиатуру к микроконтроллеру PIC16F628A, для отображения номера “нажатой” кнопки использовал цифровой индикатор на драйвере MAX7219. Схема подключения представлена ниже:
Дополнительно к выходным линиям клавиатуры подключил светодиоды HL1-HL8 через резисторы R2-R9. Переключатель SA1 предназначен для выбора режима работы микроконтроллера, прием 8-ми или 16-и байт данных, режим должен соответствовать настройкам сенсорной клавиатуры, (перемычка JP3, 8 или 16 активных кнопок). Необходимо выбрать высокий активный логический уровень для последовательного интерфейса, для выходных буферов – открытый сток с подтяжкой к 0, для этого на клавиатуре необходимо установить перемычки JP1, JP2, остальные перемычки я не устанавливал. В исходном состоянии светодиоды остаются выключенными.
Код программы представлен ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 | #include <P16F628A.INC> LIST p=16F628A __CONFIG H'3F10' ;Конфигурация микроконтроллера Sec equ 20h ;регистры хранения временных данных для Sec1 equ 21h ;подпрограмм паузы Sec2 equ 22h ; scetbit equ 23h ;регистр счета для передачи по протоколу spi shet equ 24h ;регистр хранения временных данных scetbit_1 equ 25h ;счетчик принятых бит var equ 26h ;вспомогательный регистр подпрограммы преобразования byte_H equ 27h ;регистры хранения полученных байт данных по byte_L equ 28h ;последовательному интерфейсу knp_kod equ 29h ;регистр хранения кода кнопки edin equ 2Ah ;регистры хранения десятичных значений desiat equ 2Bh ;двоичного числа sotni equ 2Ch ; dat_ind equ 2Dh ;регистр данных для передачи по протоколу spi adr_ind equ 2Eh ;регистр адреса для передачи по протоколу spi flag equ 7Dh ;регистр флагов W_TEMP equ 7Eh ;регистр для хранения значения аккумулятора W STATUS_TEMP equ 7Fh ;регистр для хранения значения STATUS #DEFINE regim PORTB,2 ;выбор режима 8/16 кнопок #DEFINE scl PORTB,3 ;линия тактирования SCL #DEFINE sdo PORTB,4 ;линия данных SDO #DEFINE datai PORTB,5 ;линия входа данных драйвера MAX7219 #DEFINE cs PORTB,6 ;линия выбора драйвера MAX7219 #DEFINE clk PORTB,7 ;линия тактирования драйвера MAX7219 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; org 0000h ;начать выполнение программы с адреса 0000h goto Start ;переход на метку Start ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Подпрограмма обработки прерываний org 0004h ;начать выполнение подпрограммы с адреса 0004h movwf W_TEMP ;сохранение значений ключевых регистров swapf STATUS,W ; clrf STATUS ; movwf STATUS_TEMP ; btfss sdo ;опрос линии sdo goto exxit ;низкий лог. уровень sdo: переход на метку exxit met_int1 btfsc sdo ;высокий лог. уровень sdo: ожидание смены уровня на низкий goto met_int1 ;переход на метку met_int1 movlw .4 ;пауза 13 мкс для ожидания времени Tw movwf shet ; met_int2 decfsz shet,F ; goto met_int2 ; bcf flag,1 ;сброс флага получения 2-х байт данных met_int7 movlw .8 ;запись счетчика для принятия 8-ми бит данных movwf scetbit_1 ; met_int5 rrf byte_H,F ;сдвиг регистра byte_H, для принятия последующего бита rrf byte_L,F ;сдвиг регистра byte_L, для принятия последующего бита bsf scl ;установка линии scl в 1 movlw .2 ;пауза 7 мкс movwf shet ; met_int3 decfsz shet,F ; goto met_int3 ; bcf scl ;установка линии scl в 0 movlw .2 ;пауза 7 мкс movwf shet ; met_int4 decfsz shet,F ; goto met_int4 ; btfsc sdo ;опрос линии sdo, и запись полученного значения bsf byte_H,7 ;в 7-й бит регистра byte_H btfss sdo ; bcf byte_H,7 ; decfsz scetbit_1,F ;декремент счетчика бит goto met_int5 ;счетчик не равен нулю: переход на метку met_int5 btfsc flag,1 ;опрос флага получения 2-х байт данных goto knp_16 ;получен 2-й байт: переход на метку knp_16 met_int6 btfss regim ;опрос линии regim (выключатель SA1) goto knp_8 ;режим 8 бит данных, один байт: переход на метку knp_8 bsf flag,1 ;режим 16 бит данных, два байта, установка флага получения 2-х байт данных goto met_int7 ;переход на метку met_int7, для загрузки 2-го байта knp_8 movlw .8 ;вычисление кода кнопки для варианта с одним байтом (8 бит) путем movwf knp_kod ;смещения регистра byte_H knp_8_1 btfsc byte_H,7 ; goto exxit_1 ; bcf STATUS,C ; rlf byte_H,F ; decfsz knp_kod,F ; goto knp_8_1 ; goto exxit ;переход на метку exxit knp_16 movlw .16 ;вычисление кода кнопки для варианта с двумя байтами (16 бит) путем movwf knp_kod ;смещения регистра byte_H, byte_L knp_16_1 btfsc byte_H,7 ; goto exxit_1 ; bcf STATUS,C ; rlf byte_L,F ; rlf byte_H,F ; decfsz knp_kod,F ; goto knp_16_1 ; goto exxit ;переход на метку exxit exxit_1 bsf flag,0 ;установка флага получения номера кнопки exxit movf PORTB,W ;чтение порта B для устранения несоответствия bcf INTCON,RBIF ;сброс флага прерывания по изменению уровня на RB4-RB7 swapf STATUS_TEMP,W ;восстановление регистров STATUS и W movwf STATUS ; swapf W_TEMP,F ; swapf W_TEMP,W ; retfie ;выход из подпрограммы прерывания ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Основная программа Start movlw b'01000000' ;настройка выходных защелок порта B movwf PORTB ; movlw b'00000111' ;выключение компараторов movwf CMCON ; bsf STATUS,RP0 ;выбрать 1-й банк movlw b'00010111' ;настройка линий ввода\вывода порта B movwf TRISB ; bcf STATUS,RP0 ;выбрать 0-й банк clrf flag ;очистка регистра флагов movf PORTB,W ;чтение порта B для устранения несоответствия bcf INTCON,RBIF ;сброс флага прерывания по изменению уровня на RB4-RB7 bsf INTCON,RBIE ;разрешение прерываний на линиях RB4-RB7 bsf INTCON,GIE ;разрешение глобальных прерываний call init_lcd ;вызов подпрограммы инициализации драйвера(MAX7219) call signal_not ;вызоВ подпрограммы вывода знаков тире "- -" на 1,2 индикаторы met_1 btfss flag,0 ;опрос флага получения номера кнопки goto met_1 ;переход на метку met_1 bcf flag,0 ;сброс флага получения номера кнопки call vivod ;вызов подпрограммы вывода номера кнопки на цифровой индикатор goto met_1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Подпрограмма вывода десятичного значения номера кнопки на цифровое табло vivod movf knp_kod,W ;копирование значения номера кнопки в регистр var movwf var ; call razryad ;вызов подпрограммы преобразования двоичного числа в десятичное ;по разрядам movlw 0x01 ;Вывод значения разряда единиц номера кнопки на 1-й индикатор movwf adr_ind ; movf edin,W ; movwf dat_ind ; call send ; movlw 0x02 ;Вывод значения разряда десятков номера кнопки 2-й индикатор movwf adr_ind ; movf desiat,W ; movwf dat_ind ; call send ; return ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;подпрограмма преобразования двоичного числа в десятичное по разрядам, двоичное число в var ;разряд сотен sotni, разряд десятков desiat, разряд единиц edin razryad clrf sotni ; pr0 incf sotni,F ;разряд сотен movlw .100 ; subwf var,F ; btfsc STATUS,C ; goto pr0 ; decf sotni,F ; movlw .100 ; addwf var,F ; clrf desiat ; pr1 incf desiat,F ;разряд десятков movlw .10 ; subwf var,F ; btfsc STATUS,C ; goto pr1 ; decf desiat,F ; movlw .10 ; addwf var,F ; clrf edin ; pr2 incf edin,F ;разряд единиц movlw .1 ; subwf var,F ; btfsc STATUS,C ; goto pr2 ; decf edin,F ; return ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Подпрограмма вывода символов тире на 1,2 индикаторы signal_not movlw 0x08 ;очистка 8-го индикатора movwf adr_ind ; movlw 0x0F ; movwf dat_ind ; call send ; movlw 0x07 ;очистка 7-го индикатора movwf adr_ind ; movlw 0x0F ; movwf dat_ind ; call send ; movlw 0x06 ;очистка 6-го индикатора movwf adr_ind ; movlw 0x0F ; movwf dat_ind ; call send ; movlw 0x05 ;очистка 5-го индикатора movwf adr_ind ; movlw 0x0F ; movwf dat_ind ; call send ; movlw 0x04 ;очистка 4-го индикатора movwf adr_ind ; movlw 0x0F ; movwf dat_ind ; call send ; movlw 0x03 ;очистка 3-го индикатора movwf adr_ind ; movlw 0x0F ; movwf dat_ind ; call send ; movlw 0x02 ;вывод тире на 2-й индикатор movwf adr_ind ; movlw 0x0A ; movwf dat_ind ; call send ; movlw 0x01 ;вывод тире на 1-й индикатор movwf adr_ind ; movlw 0x0A ; movwf dat_ind ; call send ; return ;выход из подпрограммы ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Подпрограмма инициализации драйвера(MAX7219) цифрового табло init_lcd call pauslcd ;вызов подпрограммы паузы 2 мс movlw 0x0F ;выключить тестовый режим movwf adr_ind ; movlw 0x00 ; movwf dat_ind ; call send ; movlw 0x0C ;включение индикатора movwf adr_ind ; movlw 0x01 ; movwf dat_ind ; call send ; movlw 0x0A ;интенсивность 15/32 movwf adr_ind ; movlw 0x07 ; movwf dat_ind ; call send ; movlw 0x09 ;использовать BCD Code B для всех индикаторов movwf adr_ind ; movlw 0xFF ; movwf dat_ind ; call send ; movlw 0x0B ;использовать 8 индикаторов movwf adr_ind ; movlw 0x07 ; movwf dat_ind ; call send ; return ;выход из подпрограммы ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Подпрограмма отправки 2-х байт на драйвер (MAX7219) цифрового табло по пртоколу SPI send bcf cs ;Сбросить линию выбора драйвера CS movlw .8 ;Отправка содержимого адресного байта adr_ind movwf scetbit ; povtor bcf clk ; btfsc adr_ind,7 ; bsf datai ; btfss adr_ind,7 ; bcf datai ; bsf clk ; rlf adr_ind,F ; decfsz scetbit,F ; goto povtor ; movlw .8 ;Отправка содержимого байта данных dat_ind movwf scetbit ; povtr1 bcf clk ; btfsc dat_ind,7 ; bsf datai ; btfss dat_ind,7 ; bcf datai ; bsf clk ; rlf dat_ind,F ; decfsz scetbit,F ; goto povtr1 ; bcf clk ; bsf cs ;установить в 1 линию выбора драйвера CS return ;выход из подпрограммы ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; pauslcd movlw .4 ;подпрограмма пауза 2 мс movwf Sec1 ; p_l2 movlw .166 ; movwf Sec ; p_l1 decfsz Sec,F ; goto p_l1 ; decfsz Sec1,F ; goto p_l2 ; return ;выход из подпрограммы pause movlw .25 ; movwf Sec2 ; p_3 movlw .255 ;подпрограмма пауза 5 сек movwf Sec1 ; p_1 movlw .255 ; movwf Sec ; p_2 decfsz Sec,F ; goto p_2 ; decfsz Sec1,F ; goto p_1 ; decfsz Sec2,F ; goto p_3 ; return ;выход из подпрограммы end ;конец всей программы ; |
Для линии RB4 микроконтроллера настроено прерывание по изменению уровня сигнала, при возникновении которого вызывается обработчик прерываний, в котором выполняется прием данных от сенсорной клавиатуры, один или два байта в зависимости от состояния переключателя SA1. Далее путем сдвига принятых байтов вычисляется номер “нажатой” кнопки, который сохраняется в регистре knp_kod. После чего происходит выход из обработчика прерываний с установкой флага flag,0. В основной программе по установленному флагу происходит вывод номера кнопки на цифровой индикатор. Сигнал прерывания DV от модуля клавиатуры поступает при каждом изменении состояния кнопок, то есть прикоснулись к кнопке – возникло прерывание, убрали палец – очередное прерывание. Светодиоды HL1-HL8 зажигаются при прикосновении к кнопкам в режиме TP2=1, когда задействовано 8 кнопок.
Могу сказать, что кнопки клавиатуры обладают хорошей чувствительностью, прикосновение определяется без ошибок, потребуется всего 2 линии ввода/вывода микроконтроллера для подключения, данная клавиатура может стать отличной альтернативой механическим кнопкам, в виду отсутствия износа, еще одно преимущество это применение клавиатуры в автономных устройствах вследствие низкого энергопотребления.
Сергей
24 Мар 2016Какое-ж Вам ОГРОМНОЕ спасибо за эту статью! Слов нет!
admin
24 Мар 2016Рад что вам понравилась статья)
Тт
3 Окт 2016Хорошая статья спасибо
Александр
31 Окт 2017Добрый день! Большое спасибо за информацию.
Небольшое уточнение. TTP229 бывают разных модификаций BSF и LSF. Они не принципиально, но отличаются и выводами и функциями. В статье рассмотрена BSF.
Нет нужды делать задержки при формировании тактовых импульсов на линии SСL. Достаточно 2мкс.
Буквально. BSF SCL; BCF SCL вполне понятный импульс такта для микросхемы.
admin
31 Окт 2017Приветствую, рад что статья оказалось полезной, про модификации возьму на заметку, минимальный период тактирования исходя из даташита получается 1/512000=1,9 мкс, так что да, должно работать, я просто не стал работать на крайних пределах, опасаясь неработоспособности схемы.
Олег
24 Ноя 2017отличие TTP229 BSF и LSF как раз таки принципиально (для программирования)
(не считая отличия в распиновке)
в LSF версии (более новой) есть I2C и соотв. выводы SDA SCL и адрес
и можно использовать аппаратный I2C(TWI) и соотв. повешать на одну шину с другими датчиками
в BSF версии (в синих модулях) двухпроводный интерфейс Не I2C выводы SDO SCL
т.е. там нет адреса и выдачи “Асков”
вот пример модуля с I2C (не реклама)
https://ru.aliexpress.com/store/product/16-TTP229-I2C/1950989_32672496161.html?spm=a2g0v.12010615.0.0.73dbec4daOeK7a
Алексей
9 Апр 2020Ох, спасибо! Я уже весь интернет перерыл, выходы фиксируют нажатия, а по iic ничего не получить. Уже вторую клавиатуру купил, думал, брак. А оно вон оно как… Смутила, конечно, надпись sdo вместо sda, но не сильно: китайцы и не такое пишут. А ларчик-то просто открывался.
Александр
1 Ноя 2017Могу скинуть схемы этих микросхем и скриншот работы микросхемы в анализаторе
admin
1 Ноя 2017Скидывайте на почту, не помешает.
Александр
1 Ноя 2017Отправил
Maddy
23 Авг 2018sir can you please give me the connection diagram in english version so that i can use it for PIC16f676 version and also code
david
18 Фев 2019здравствуйте,
прежде большое спасибо за статью.
я видел на алибаба такой же модуль с тем же названием ,но без кнопок(вот ссылка)
https://ru.aliexpress.com/store/product/16-TTP229-I2C/1950989_32672496161.html?spm=a2g0v.12010108.1000016/B.1.5da67e87PKpGqJ&isOrigTitle=true
скажите пожалуйста, это только модуль и к нему нужно подключить кнопки или они с другой стороны тоже? хотя я в этом сомневаюсь.
admin
18 Фев 2019Приветствую, это просто модуль, нужно отдельно подключить кнопки, в виде сенсорных площадок.
david
19 Фев 2019а модуль MPR121 не будете рассматривать?
david
19 Фев 2019вновь и вновь вам огромное спасибо за ваш труд
Алексей
9 Апр 2020А просто в процессе работы данные не получить? Я имею в виду, не по прерыванию, а по настроению?
Олег
9 Апр 2020можно
OM
8 Янв 2023Добрый день
Какая обвязка нужна для TTP229-LSF если использовать голую микросхему и читать ее 16 входов по I2C?
Где можно купить микруху?
Спасибо