关于接近传感器的检测功能

公告

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

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

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

T_Fukuta_1-1695693920618.pngT_Fukuta_2-1695693951122.png

我正在尝试使用 PSoC Creator 中的接近传感器功能 (Proximity0)。

可以使用 CapSense_Structure.c 中的 CapSense_IsProximitySensorActive() 读取接近功能的值,但接近确定保持关闭状态。论证请参考下图(尽管我把手靠近了电极片)。
我认为在进行接近判断之前扫描处理是必要的,但是在Capsense_Sensing.c中
 调用CapSense_Scan ( )。如果还有其他需要调用的API,请告知。
 
T_Fukuta_0-1695694936322.pngT_Fukuta_1-1695694994549.png

 

 

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

@T_福田

感谢您联系英飞凌社区。

它只扫描接近传感器吗?

如果您想扫描单个传感器,请参阅随附的两个主要代码。

在进行邻近判断之前,需要进行以下处理:

传感器设置

扫描

等待扫描完成

扫描完成后的处理

将变得必要。

 

感谢您的理解。

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

感谢你的回复。

传感器设置→ CapSense_SetupWidget (CapSense_PROXIMITY0_WDGT_ID);

扫描→ CapSense_Scan ();

等待扫描完成 → while (CapSense_NOT_BUSY != CapSense_IsBusy ()){}
扫描完成后的处理 → CapSense_ProcessWidget ( CapSense_PROXIMITY0_WDGT_ID );
 
被调用,但不判断为ON。
 
另外,我收到了两个C文件,但是它们之间有什么区别?对于给您带来的不便,我深表歉意,但如果您能教我,我将不胜感激。
 CapSense_FtInitialize ();
        CapSense_InitializeAllBaselines ();
它还调用初始化API,例如↑。
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 %E3% 81 ...

初始化后在循环中执行以下处理。

    for(;;) {
        if (CapSense_IsBusy() == CapSense_NOT_BUSY) {
            CapSense_ProcessAllWidgets() ;
            
            proxy_volume = CapSense_IsProximitySensorActive(
                                CapSense_PROXIMITY0_WDGT_ID,
                                CapSense_PROXIMITY0_SNS0_ID) ;

            proxy_volume = CapSense_IsProximitySensorActive(
                                CapSense_PROXIMITY0_WDGT_ID,
                                CapSense_PROXIMITY0_SNS1_ID) ;
#if !USE_CAPSENSE_TUNER            
//            snprintf(str, STR_BUF_LEN, "Tone: %u  Volume: %u\n\r",
//                cs_signal[0], cs_signal[1]) ;
//            print(str) ;
            play_note(cs_signal[0], cs_signal[1]) ;
#endif
            
            cs_tuner() ;
            CapSense_ScanAllWidgets() ;
        }
    }

我认为您应该使用 CapSense_IsProximitySensorActive() 来获取接近传感器的状态。

 value = CapSense_IsProximitySensorActive(
                                CapSense_PROXIMITY0_WDGT_ID,
                                CapSense_PROXIMITY0_SNS0_ID) ;

摩托

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

嗨,

所以我用 CY8CKIT-044 和 4 个接近环路尝试了这个,使用几个面包板。

IMG_5645.JPG

Tera 学期日志

001-TeraTerm_log.JPG

原理图

002-schematic.JPG

UART 配置

003-UART_Config.JPG

CapSense 配置

004-capsense_config.JPG

别针

005-pins.JPG

main.c

#include "project.h"
#include "stdio.h"

#define STR_LEN 64
char str[STR_LEN + 1] ;

void print(char *str)
{
    UART_UartPutString(str) ;
}

void cls(void)
{
    print("\033c") ; /* reset */
    CyDelay(20) ;
    print("\033[2J") ; /* clear screen */
    CyDelay(20) ;
}

void splash(void)
{
    cls() ;
    print("Multi Proxy Test") ;
    snprintf(str, STR_LEN, "(%s %s)\n", __DATE__, __TIME__) ;
    print(str) ;
}

#define NUM_PROXY 4
int prox[NUM_PROXY] = { 0 } ;
int prev[NUM_PROXY] = { 0 } ;

int main(void)
{
    CyGlobalIntEnable; /* Enable global interrupts. */
    UART_Start() ;
    splash() ;
    
    CapSense_Start() ;
    
    CapSense_ScanAllWidgets() ;
    for(;;)
    {
        if (CapSense_NOT_BUSY == CapSense_IsBusy()) {
            CapSense_ProcessAllWidgets() ;
            
            prox[0] = CapSense_IsProximitySensorActive(
                CapSense_PROXIMITY0_WDGT_ID, CapSense_PROXIMITY0_SNS0_ID) ;
            prox[1] = CapSense_IsProximitySensorActive(
                CapSense_PROXIMITY0_WDGT_ID, CapSense_PROXIMITY0_SNS1_ID) ;
            prox[2] = CapSense_IsProximitySensorActive(
                CapSense_PROXIMITY0_WDGT_ID, CapSense_PROXIMITY0_SNS2_ID) ;
            prox[3] = CapSense_IsProximitySensorActive(
                CapSense_PROXIMITY0_WDGT_ID, CapSense_PROXIMITY0_SNS3_ID) ;
            
            if ((prox[0] != prev[0]) 
                || (prox[1] != prev[1]) 
                || (prox[2] != prev[2]) 
                || (prox[3] != prev[3])) {
                    snprintf(str, STR_LEN, "PROXY: 0:%d, 1:%d, 2:%d, 3:%d\n\r",
                        prox[0], prox[1], prox[2], prox[3]) ;
                    print(str) ;
                }
                
            prev[0] = prox[0] ;
            prev[1] = prox[1] ;
            prev[2] = prox[2] ;
            prev[3] = prox[3] ;

            CapSense_ScanAllWidgets() ;
        }
    }
}

 

摩托

 

 

0 点赞