Поговорим о клавиатурах.Часть 3 - обзор емкостной сенсорной клавиатуры на 15 ключей

21.07.2017 15:07

jazon



        Всем привет, в данной статье, мы познакомим вас с очередной разработкой китайской промышленности в области бюджетной любительской электроники. Ёмкостной сенсорный тачпад в виде диска, имеет довольно таки антуражный вид и вызывает желание подключить его к микроконтроллеру с целью освоения этого девайса. Модуль I2C конвертора при этом выступает в роли вспомогательного устройства для экономии используемых портов на плате Arduino. Но обо всём по порядку...

        На фото ниже, можно видеть эти два устройства. Модуль I2C конвертора работает на базе микросхемы TTP229, и разработан он специально для емкостных тачпадов такого типа. Передача данных контроллеру(как уточнил бы кэп) происходит по шине I2C.

         В общем то - можно было бы описать как подключить эти два устройства к друг другу, но наверное обойдёмся без лишнего драматизма. По фото и так видно что куда подключается. Можно использовать обычную косичку на 15 проводов, и подключиться напрямую от тачпада к конвертору, далее - от конвертора к плате Arduino подключаемся к шине I2C. Просто напомню что у плат UNO и Nano шина I2C соответствет контактам A4, A5 а у платы Arduino Mega соответствует контактам  20 и 21. 


        Внимание !!! При подключении модуля I2C конвертора важно не перепутать питающие провода, модуль не защищен от неправильного подключения питания !!! Есть риск моментально спалить модуль !!!

        Поиски библиотеки с примерами для данной пары не принесли никаких результатов, но(!) продавец магазина дал тестовый скетч для проверки работоспособности этих двух девайсов. Скетч можно скачать по ссылке от гугл диска, либо прямо из окна браузера, далее приводим листинг скетча: 

#include "Wire.h"
#define ttp229 (0xAF >> 1)

uint16_t data_out = 0;
uint16_t data1, data2;

int count = 0;

boolean count2 = false;

int button[16];
int oldata[16];

void setup()
{
  Serial.begin(9600);
  Wire.begin();
}
void loop()
{
  Wire.requestFrom(ttp229, 2, true);
 
  delay(1);
 
  while(Wire.available())
  {
    data1 = Wire.read();
    data2 = Wire.read();
   
    data_out = (data1 << 8) | data2;
   
    for(int i = 1; i < 17; i ++)
    {
      uint16_t contrast = 0x8000;
      if(data_out & contrast)
      {
        //Serial.println(i);
        button[count] = i;
        count ++;
        delay(1);
      }
      data_out <<= 1;    
    }
    if(count2)
    {
      switch(count)
      {
        case 1:
          if(oldata[0] == button[0])
          {
            Serial.println(button[0]);
            delay(10);
          }
          break;
         
        case 2:
          if(oldata[0] == button[0] && oldata[1] == button[1])
          {
            for(int i = 0; i < 2; i ++)
            {
              Serial.print(button[i]);
              Serial.print("  ");
              delay(10);
            }
          }
          break;
      }
    }
    delay(20);
   
    for(int i = 0; i < 16; i ++)
    {
      oldata[i] = button[i];
    }
   
    count = 0;
    count2 =! count2;
  }
}

        И всё же, не хотелось бы использовать монитор порта, ну разве что только в тесте. Немного подкорректировав скетч и добавив к оборудованию модуль дисплея на базе драйвера TM1637, получаем более серьёзную сборку, об этом можно посмотреть видео:



         Для тех кому интересен модифицированный скетч с подключаемым модулем дисплея - скачать можно по ссылке здесь. Видео показывает, что тачпад и конвертор работают отлично. Касания контактных площадок фиксируются, и номера площадок выводятся на дисплей. Но есть и минусы - тачпад и конвертор очень чувствительны к электромагнитным полям, поэтому если поблизости есть электромагнитные помехи - то скорее всего приборы будут выдавать ложные срабатывания. Также модуль конвертора очень чувствителен к питающему напряжению - падение ниже 4.2 Вольта негативно сказывается на работе и также приводит к ложным срабатываниям. На этом всё, оставляйте свои комментарии ниже, и успешных вам открытий в области электроники !!!



Расскажи о нас

Сообщение

Если у Вас есть опыт в работе с Arduino и собственно есть время для творчества, мы приглашаем всех желающих стать авторами статей публикуемых на нашем портале. Это могут быть как уроки, так и рассказы о ваших экспериментах с Arduino. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.