Считывание значений с емкостного сенсорного датчика 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, в который встроен линейный сенсорный датчик.
Есть ли у кого-нибудь опыт работы с этим датчиком и как я могу получить доступ к необработанным показаниям?
@juliusbangert, 👍-1
Обсуждение1 ответ
mpr121 выдает необработанные значения , он имеет 12 электродов/емкостных датчиков
https://www.sparkfun.com/datasheets/Components/MPR121.pdf https://github.com/BareConductive/mpr121/tree/public/MPR121/Examples/DataStream
Спасибо, но это не ответ. Мой вопрос касается чтения необработанных значений на TTP229, а не на MPR121., @juliusbangert
- Не удается найти/подключить устройства I2C (SHT31 и SGP30)
- MAX30100 не работает
- Подключение двух Arduino через I2C, когда контакты I2C A4/A5 уже используются.
- Отправка более BUFFER_LENGTH(32) байт в подчиненном ответе I2C
- Направление по компасу не изменяется линейно
- Не в состоянии записать или прочитать регистры датчиков. Есть ли у меня ошибка в коде?
- Сенсорный датчик и потенциометр - Нужна помощь
- Отправка и получение различных типов данных через I2C в Arduino
Боюсь, продукт, на который вы ссылались, похоже, имеет 8 дискретных прокладок под слайдером. Так что, я полагаю, они действительно зачитывают только эти 8 шагов. Проверьте изображения, на которых устройство изображено с нижней стороны. Это не дает прямого ответа на ваш вопрос, но я все же надеюсь, что это поможет., @Florian