Считывание значений с емкостного сенсорного датчика TTP229 на arduino

Я хотел бы иметь возможность считывать необработанные значения емкостного датчика с чипа TTP229 через i2c в Arduino. У меня есть одна из этих секционных плат для игры:

Моя цель - получить значения, аналогичные значениям MPR121 или библиотеки емкостных датчиков Arduino, где показания меняются в зависимости от близости и того, насколько сильно вы касаетесь пэдов. Я протестировал следующий код, но я могу обнаружить только включение / выключение чтения.

#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++;
            }
            data_out<<=1;    
        }
        if(count2)
        {
            switch(count)
            {
                case 1:
                if( oldata[0] == button[0] )
                {
                    Serial.println( button[0] );
                    delay( 20 );
                }
                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("  ");
                    }
                }
                break;
            }
        }
        for( int i = 0; i < 16; i++ )
        {
            oldata[i] = button[i];
        } 
        count = 0;
        count2 =! count2;
    }
}

Даже если я просто распечатаю data1 и data2 из примера, это, похоже, не приведет к появлению показаний, которые изменяются в зависимости от емкости. Сначала я думал, что это аппаратное ограничение, но потом я наткнулся на этот продукт TTP229, в который встроен линейный сенсорный датчик.

Есть ли у кого-нибудь опыт работы с этим датчиком и как я могу получить доступ к необработанным показаниям?

, 👍-1

Обсуждение

Боюсь, продукт, на который вы ссылались, похоже, имеет 8 дискретных прокладок под слайдером. Так что, я полагаю, они действительно зачитывают только эти 8 шагов. Проверьте изображения, на которых устройство изображено с нижней стороны. Это не дает прямого ответа на ваш вопрос, но я все же надеюсь, что это поможет., @Florian


1 ответ


2

mpr121 выдает необработанные значения , он имеет 12 электродов/емкостных датчиков

https://www.sparkfun.com/datasheets/Components/MPR121.pdf https://github.com/BareConductive/mpr121/tree/public/MPR121/Examples/DataStream

,

Спасибо, но это не ответ. Мой вопрос касается чтения необработанных значений на TTP229, а не на MPR121., @juliusbangert