公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,社区

我目前正在使用PSoc4000s评估板和Capsense组件 v7.0 开发一个关于接近传感的项目。
在我的项目中,我想在距离传感器检测到手指的电容并控制某些东西时获得该值。
但是,接近感应似乎不像其他 capsense 小部件那样具有获取原始数据的功能。
例如,对于线性滑块,我考虑使用以下 API 来返回手指的重心位置。
capsense_getcentroidPos(控件 ID);

你知道有类似的近距离感应功能吗?

CAN 有人给我一些建议吗?

 

最诚挚的问候,

馆林千寻/NEXTY

0 点赞
8 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨 @NXTY_Tatebayasi

你能告诉我你的意思吗?"在我的项目中,我想得到距离传感器检测到手指的电容并控制某些东西时的值?"

你在找 CapSense 上的手势吗?

请更详细地详细说明。

最诚挚的问候,

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,@nin -san,

感谢您的回复。

例如,我想使用 UART 将邻近值输出为数值,或者使用邻近值作为决策条件来控制其他 GPIO。
我的项目以 Proximity_distance_040.cydsn 示例项目为基础。
我正在附上它。
注意:我已经更新了 CAPSENSE 组件,因此调用的 API 与原来的 API 不同。

 

最诚挚的问候,
馆林千寻/NEXTY

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨 @NXTY_Tatebayasi

在 CapSense 组件中,默认情况下不启用接近传感器。 你应该为每个距离传感器调用 capsense_enableWidget(uint32 小部件) API,并将距离传感器名称作为参数来启用它。

请参阅  PSoC 4 电容式检测 (CapSense® ) 7.0 的 应用程序编程接口 部分

capsense_isProximitySensorActive 函数报告指定接近控件/传感器的 手指检测状态。

 

#if (0u != CapSense_PROXIMITY_WIDGET_EN)
/*******************************************************************************
* Function Name: CapSense_IsProximitySensorActive
****************************************************************************//**
*
* \brief
*  Reports the finger detection status of the specified proximity widget/sensor.
*
* \details
*  This function reports if the specified proximity sensor has detected a touch
*  or not by extracting information from the wdgtStatus registers
*  (CapSense_SNS_STATUS_VALUE). This function is used
*  only with proximity sensor widgets. This function does not process the
*  widget but extracts processed results from the \ref group_structures.
*
* \param widgetId
*  Specifies the ID number of the proximity widget.
*  A macro for the widget ID can be found in the CapSense Configuration header
*  file defined as CapSense__WDGT_ID
*
* \param proxId
*  Specifies the ID number of the proximity sensor within the proximity widget to
*  get its touch detection status.
*  A macro for the proximity ID within a specified widget can be found in the
*  CapSense Configuration header file defined as
*  CapSense__SNS_ID
*
* \return
*  Returns the status of the specified sensor of the proximity widget. Zero
*  indicates that no touch is detected in the specified sensor / widget or a
*  wrong widgetId / proxId is specified.
*    - Bits [31..2] are reserved.
*    - Bit [1] indicates that a touch is detected.
*    - Bit [0] indicates that a proximity is detected.
*
*******************************************************************************/
uint32 CapSense_IsProximitySensorActive(uint32 widgetId, uint32 proxId)
{
    uint32 result = 0Lu;

    if ((widgetId < CapSense_TOTAL_WIDGETS) && (proxId < CapSense_GET_SENSOR_COUNT(widgetId)) &&
        (CapSense_WD_PROXIMITY_E ==
            (CapSense_WD_TYPE_ENUM)CapSense_dsFlash.wdgtArray[widgetId].wdgtType))
    {
        result = CapSense_dsRam.snsStatus[widgetId];
        result >>= CapSense_PROX_STS_OFFSET(proxId);
        result &=  CapSense_PROX_STS_MASK;
    }

    return result;
}
#endif /* #if (0u != CapSense_PROXIMITY_WIDGET_EN) */


最诚挚的问候,

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,@nin -san,

感谢您的详细信息。
实际上,我曾考虑过 capsense_isProximitySensorActive () 只返回检测到触摸还是接近的二进制值。
我想我 CAN 简单地调用CapSense_IsProximitySensorActive()来监视状态,但我想要得到的是接近传感器本身的值。
我是否正确理解我 CAN 使用 CapSense_dsRam.snsStatus() 获取邻近度的原始数据?

另外,这份文件目前有效吗?

pSoC® Creator™ CapSense 组件 CapSense

 

最诚挚的问候,
馆林千寻/NEXTY

 

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,@nin -san,

我还有一个问题,调用这个函数后接近传感器不起作用会是什么情况?
我在调试模式下运行了一个步骤,尽管我将调整设置为自动模式,但此函数仍确定接近度为 0(即传感器没有响应),然后该过程继续到另一个条件。
我想其原因是邻近阈值。
但是,我可能错了。

因此,请至少让我知道使此功能正常运行所需的 API。
从手册来看,我认为它是 capsense_start (),但我需要写任何其他必要的代码吗?

最诚挚的问候,
馆林千寻/NEXTY

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,


几年前,我发布了以下代码示例。
https://community.infineon.com/t5/Code-Examples/A-Theremin-Wannabe-%E3% 81 %AA% E3 %82% 93 81 E3 %E3...

在那个例子中,我使用访问 i2cramBuffer 中的 u16_signal [] 作为 cs_signal。

摩托

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,@MotooTanaka-san,

谢谢你的合作。
我很乐意参考你的项目。

>所以我偷看了 run_tuner () 函数的源代码就在这里。
你真是个聪明的人!

最诚挚的问候,
馆林千寻/NEXTY

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨 @NXTY_Tatebayasi

PSoC® Creator™ CapSense 组件 CapSense Register Map 是一个旧文档,没有进一步的支持。

最诚挚的问候,

 

0 点赞