Сенсорная клавиатура TTP 229 мультитач
- Войдите на сайт для отправки комментариев
Сб, 11/02/2017 - 21:34
Может быть это уже никому не интересно и давно разжевано, но я не нашел готового решения опроса клавиатуры с контролем мультитача поэтому решил допилить то что есть.
/* Скетч опроса кнопок сенсорной клавиатуры TTP229 с поддержкой мультитача - можно нажать сразу все 16. Используется опрос по I2C стоят перемычки: TP2(если замкнута то используются все 16 кнопок), TP3, TP4(если замкнуты все кнопки в мультитаче) Keypad......Arduino VCC.........+5V GND.........GND SCL.........Digital pin 2 SDO.........Digital pin 3 THIS SOFTWARE IS PROVIDED "AS IS". HOBBY COMPONENTS MAKES NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ACCURACY OR LACK OF NEGLIGENCE. HOBBY COMPONENTS SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR ANY DAMAGES INCLUDING, BUT NOT LIMITED TO, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON WHATSOEVER. PS: За основу использован скетч http://forum.hobbycomponents.com/viewtopic.php?f=73&t=1781&hilit=hcmodu0079 */ // устанавливаем пины I2C #define SCL_PIN 2 #define SDO_PIN 3 //массив для считанных кнопок boolean K[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; void setup() { //инициализируем передачу по СОМ порту Serial.begin(9600); //Конфигурируем порты SCL и SDO pinMode(SCL_PIN, OUTPUT); pinMode(SDO_PIN, INPUT); } //Бесконечный цыкл void loop() { //запускаем процедуру опроса кнопок Read_Keypad(); //Выводим в СОМ порт полученный массив for (int i=0; i<=15; i++) Serial.print(K[i]); Serial.print('\n'); /* Wait a little before reading again so not to flood the serial port*/ //delay(100); } //Процедура считывания кнопок byte Read_Keypad(void) { byte Count; //Обнуляем массив для следующего считывания for (int i=1; i<=16; i++) K[i] = false; //Устанавливаем низкий уровень на тактирующем пине SCL и считываем значение на дата SDO для всех 16 кнопок for(Count = 0; Count <= 15; Count++) { digitalWrite(SCL_PIN, LOW); //Если дата пин SDO в низком уровне кнопка №Count нажата, пишем в массив if (!digitalRead(SDO_PIN)) K[Count] = true; digitalWrite(SCL_PIN, HIGH); } return K[Count]; }
молодец
Я не знаю, писать про пирожок или нет ?