完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
亲爱的
我有一个关于CapSense Slider的问题。 我将评估PSoC4S(使用评估板:CY8CKIT-145-40XX)。 我正在检查一个最坏的情况下的测试,特别是,当手指很慢地移动到传感器上时,它是否可以被检测到(例如,需要10秒才能从电极A移动到下一个电极B)。 在这种情况下,电极B中的原始计数总是缓慢上升,因为微分计数小于阈值。因此,电极B内的基线保持对原始计数的补偿。当手指完全移动到电极B时,CAPSENSE无法检测到手指。小于阈值。 在这种情况下,我想检测我的手指在电极B.什么是一个很好的方法来做到这一点?大概,关于手指滑动的速度,存在限制吗? 以上来自于百度翻译 以下为原文 Dear I have a question about CapSense Slider. I am going to evaluate PSoC4S. (using evaluation board: CY8CKIT-145-40XX) I'm checking a worst case scenario test. In particular, when move very slowly finger on sensor, whether it can be detect. (For example, take 10 seconds to move to the next electrode B from a electrode A) Such a case, the raw count always rise within electrode B becomes slow, because diff count is less than threshold. Therefore, baseline within electrode B keeps track an compensates for the raw count. When my finger complete move to electrode B, CapSense cannot detect my finger.(because diff count is less than threshold.) In such a case, I want to detect my finger on electrode B. what would be a good way to do it? Probably, about speed to finger slide, exist a restriction? |
|
相关推荐
4个回答
|
|
亲爱的山下山,
根据滑块设计准则,每个节段的宽度小于雪佛龙图案的手指尺寸。当手指存在于滑块上时,它接触不止一个元素,这有助于获得良好的质心,因为我们也得到相邻元素上的信号。在你的测试用例中,你将手指从一个元素慢慢移动到另一个元素,这里我们必须调整滑块,使得我们在相邻信号上的信号高于噪声阈值,这样基线就不会被更新。 谢谢, Yuva。 以上来自于百度翻译 以下为原文 Dear Yamashita-san, By the slider design guidelines, the width of each segment is smaller than the finger size with chevron pattern. When the finger is present on the slider it contacts more than one element, this helps to get good centroid as we get signal on the neighboring element as well. In your test case you move the finger slowly from a element to another, here we must tune the slider such that we signal on the neighboring signal is higher than noise threshold so the baseline is not updated. Thanks, Yuva. |
|
|
|
你好,尤瓦山, 谢谢你的回复。 你有一个观点。检测只需要区分计数需要超过噪声阈值。 顺便问一下,过去有没有其他用户的类似问题?我认为这是一个常见的用例…OHER用户在做什么? 最好的问候 以上来自于百度翻译 以下为原文 Hello Yuva-san, Thank you for your reply. You've got a point. Detect have only to Diff count need to beyond the noise threshold. By the way, Were there similar questions from other user in the past? I think it's a common use cases... How's ohter user doing? Best Regards |
|
|
|
山下山 在典型应用中,与手指移动相比,CAPSSENG滑块扫描时间将非常快,因此根本不会观察到这种效果。 谢谢, 尤瓦 以上来自于百度翻译 以下为原文 Yamashita-san, In typical applications the CapSense slider scan time will be very fast compared to the finger movement so that this effect will not be observed at all. Thanks, Yuva |
|
|
|
抱歉延误报告。 回答自己的问题。 这个问题解决了,当滑块传感器打开时,可以通过不改变基线来实现。 下面是例子。 第二条: UIT16 16基线备份〔5〕;UIT8 8 BaseleNeXBooT〔5〕;UIT8 8 BaselRealStCal计数〔5〕; 空SaveBaselineParameters(空){ CaseNeSyLoxSimuld0SnS0BSnn0y值;BaselNeNeXe==CasnSexLimeStuldRo00SnS1BSLN0Oy值;BaselNeNeXe[ 2 ]=CabSnSeSealSkuldRo00SnS2YBSLN0Y值;BaselNeNeXe[ 3 ]=CAPENSESEYLoSkuldRo00SnS3YBSLN0Y值;CasSeNexLosixLo0Sn4YBSLN0Oy值;BaseleNeXeLoSkuld00SnS0BSLNNEXET0x值;BaseLeNeXeBoo[ 1 ]=CAPENSESELION SLIVELDENL00SNS1YBSLNEXEX0OL值;BaseLeNeXBoe[ 2 ]=CAPENSESEA线性滑动00SnS2YBSLNEXEX0Y值;LnEnExt0Ox值;BaseleNeXeLosiDelo00SnS4BSLNEXEX0OL值;BaselEngStReLoDe00SnS00BnSnNo.RSTY-CNT0Y值;BaselEngStReSt*CNT0Oy值;BaselRealStCub〔3〕=CasSeNexLimeStuldRo00SnS3NeGbBSnnR.STST0CNT0Y值;BaselRealStCal计数(4)=CAPENSESEA线性SLIDR0D0SnS4NEXBSLNNYRSTYCNT0Y值; CaseNeSnEngultSimuld0SnS0Sb0nSb0n0Value= BaselNeNeXe[ 0 ];CopsSeNeSnimultSkuld0SnS1BSLN00Value= BaselNeNeXe[ 1 ];CopsSexLimeStuldRo00SnS2YBSLN0OVALY=BaselNeNeXe[ 2 ];CabSnSexLimeStuldRo00SnS3BSLN00Value= BaseLeNeBuff[3 ];CabsNeSyLoxSLEd00SnS4BSLN00YOVE=BaselNexBoo[ 4 ];CopsNeSySn0Sn0BSLNNEXET00OVALY=BaseleNeXBoe[ 0 ];CopsSeNeX LosiDLo00Sn1BSLNNEXET00Value= BaseleNeXBoe[ 1 ];CopsSexLimeStudioDe00SnS2BSLNNEXT00OVALY=BaseLeNeXeBo后缀[2 ];CalthSexLimeStuld0SnS4BSLNEXEX00OVALY=BaselEnEndoStuto[ 4 ];CopsNexLosiLosiDr00Sn0nBSnNyRSTYNCNT0YOVE=BaselEngStCySt[ 0 ];CopsSexLimeStuldRe00SnS1NexBSnnRSTyCNT0YOVE=BaselEngStCyToC[[ 1 ] ];ErStCub(2);CabSnSeChansLosiDr00SnS3NeGbBSnnRSTyCNT0YOVE=BaselRealStCal计数(3);CabSnSexLimeStuldRo00SnS4NexBSnNyRSTYCNT0Y值= BaselRealStCaleC[4 ]; INTIN(){UINT8 ISLoLeDe激活;UINT16幻灯片; /*在启动CAPSENSE和EZI2C块*/CyGloalActuable之前启用全局中断; EZI2CYSTART();/*初始化EZI2C块*//*使CAPSENSE RAM数据结构为I2C缓冲器,使用CAPSYNG调谐器*/EZI2CYEZ2CSESEBUFER 1(SIEZOF(CAPENSESEA DSRAM)、SIEZOF(CAPENSESEA DSRAM)、(UTIN 8*)和CAPENSESEA DSRAM);CAPENSESEA START();/*初始化CAPSONSE组件*/CAPENSESEA SCANLADWEGGE/*扫描所有小部件*/ 对于之前扫描的(/;){/*过程数据,仅当CAPSENSE硬件为空闲*/IF(CopsSeNeNoToWordList==CAPENSESEIsBuy()){ /*保存基线更新*/SaveBaseLeEngEnter参数()之前的基线和相关参数;所有的小部件*/StLoDoPs=CAPENSESEIGETCENTRORIDPOS(CAPENSESELCONDROSTLIDRO 0WDGTZID);{0xFFFF){ISSLeDeLabV激活=1;PixelDeLyDrad(0);} {ISSLeDeLab激活=0;PixelDyWrad(1);} /*如果激活滑块控件,恢复基线和相关参数*/IF(ISSLeDeLab激活){RealeBaseLeNealEngults();} /**通过CASPUNEN TUN设置CASENSE参数ER开始前的新的CAPSENSE扫描*/CAPENSESEIRunTunter(); /*为所有小部件启动新的扫描*/CAPENSEXYSCALLADWIDGETSH();} } /*[]文件结束*/ 以上来自于百度翻译 以下为原文 Sorry for the delay in reporting. answer one's own question. This problem was resolved. I can achieve it by not changing baseline when slider sensor ON. The example is below. ============================================================================= #include "project.h" uint16 baselineBackup[5]; uint8 baselineExtBackup[5]; uint8 baselineRstCount[5]; void SaveBaselineParameters(void){ baselineBackup[0] = CapSense_LINEARSLIDER0_SNS0_BSLN0_VALUE; baselineBackup[1] = CapSense_LINEARSLIDER0_SNS1_BSLN0_VALUE; baselineBackup[2] = CapSense_LINEARSLIDER0_SNS2_BSLN0_VALUE; baselineBackup[3] = CapSense_LINEARSLIDER0_SNS3_BSLN0_VALUE; baselineBackup[4] = CapSense_LINEARSLIDER0_SNS4_BSLN0_VALUE; baselineExtBackup[0] = CapSense_LINEARSLIDER0_SNS0_BSLN_EXT0_VALUE; baselineExtBackup[1] = CapSense_LINEARSLIDER0_SNS1_BSLN_EXT0_VALUE; baselineExtBackup[2] = CapSense_LINEARSLIDER0_SNS2_BSLN_EXT0_VALUE; baselineExtBackup[3] = CapSense_LINEARSLIDER0_SNS3_BSLN_EXT0_VALUE; baselineExtBackup[4] = CapSense_LINEARSLIDER0_SNS4_BSLN_EXT0_VALUE; baselineRstCount[0] = CapSense_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_VALUE; baselineRstCount[1] = CapSense_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_VALUE; baselineRstCount[2] = CapSense_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_VALUE; baselineRstCount[3] = CapSense_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_VALUE; baselineRstCount[4] = CapSense_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_VALUE; } void RestoreBaselineParameters(void){ CapSense_LINEARSLIDER0_SNS0_BSLN0_VALUE = baselineBackup[0]; CapSense_LINEARSLIDER0_SNS1_BSLN0_VALUE = baselineBackup[1]; CapSense_LINEARSLIDER0_SNS2_BSLN0_VALUE = baselineBackup[2]; CapSense_LINEARSLIDER0_SNS3_BSLN0_VALUE = baselineBackup[3]; CapSense_LINEARSLIDER0_SNS4_BSLN0_VALUE = baselineBackup[4]; CapSense_LINEARSLIDER0_SNS0_BSLN_EXT0_VALUE = baselineExtBackup[0]; CapSense_LINEARSLIDER0_SNS1_BSLN_EXT0_VALUE = baselineExtBackup[1]; CapSense_LINEARSLIDER0_SNS2_BSLN_EXT0_VALUE = baselineExtBackup[2]; CapSense_LINEARSLIDER0_SNS3_BSLN_EXT0_VALUE = baselineExtBackup[3]; CapSense_LINEARSLIDER0_SNS4_BSLN_EXT0_VALUE = baselineExtBackup[4]; CapSense_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_VALUE = baselineRstCount[0]; CapSense_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_VALUE = baselineRstCount[1]; CapSense_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_VALUE = baselineRstCount[2]; CapSense_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_VALUE = baselineRstCount[3]; CapSense_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_VALUE = baselineRstCount[4]; } int main() { uint8 isSliderActivated; uint16 sliderPos; /* Enable global interrupts before starting CapSense and EzI2C blocks*/ CyGlobalIntEnable; EZI2C_Start(); /* Initialize EZI2C block */ /* Make CapSense RAM data structure an I2C buffer, to use CapSense Tuner */ EZI2C_EzI2CSetBuffer1(sizeof(CapSense_dsRam), sizeof(CapSense_dsRam), (uint8 *)&CapSense_dsRam); CapSense_Start(); /* Initialize CapSense Component */ CapSense_ScanAllWidgets(); /* Scan all widgets */ for(;;) { /* Process data for previous scan and initiate new scan only when * the CapSense hardware is idle */ if(CapSense_NOT_BUSY == CapSense_IsBusy()) { /* Save baseline and related parameters before baseline update */ SaveBaselineParameters(); CapSense_ProcessAllWidgets(); /* Process data for all widgets */ sliderPos = CapSense_GetCentroidPos(CapSense_LINEARSLIDER0_WDGT_ID); if( sliderPos != 0xFFFF ){ isSliderActivated = 1; Pin_LED_Write(0); } else { isSliderActivated = 0; Pin_LED_Write(1); } /* If Slider widget is activated, restore baseline and related parameters */ if( isSliderActivated ){ RestoreBaselineParameters(); } /* Sync CapSense parameters with those set via CapSense tuner before * the beginning of new CapSense scan */ CapSense_RunTuner(); /* Initiate new scan for all widgets */ CapSense_ScanAllWidgets(); } } } /* [] END OF FILE */ |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2105 浏览 1 评论
1851 浏览 1 评论
3669 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1786 浏览 6 评论
1536 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
570浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
423浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
437浏览 2评论
384浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
915浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 23:56 , Processed in 0.769282 second(s), Total 55, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号