This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2512:如何识别传感器 EVM430-CAPMINI 开发板中的长按和短按

Guru**** 2387830 points
Other Parts Discussed in Thread: EVM430-CAPMINI
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/727123/msp430fr2512-how-to-identify-long-press-and-short-in-sensor-evm430-capmini-development-board

器件型号:MSP430FR2512
主题中讨论的其他器件:EVM430-CAPMINI

尊敬的 TI 团队:

计划在同一触控传感器上添加多功能触控:

使用 EVM430-CAPMINI 开发板、 是否有办法识别单个传感器按钮上的短按(~1sec)和长按(~10sec)?

此致、

Walter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Walter、

    是的。 扫描速率约为33ms。 您可以在回调函数中定义计数器。

    如果 bTouch = true
    如果 bPrevTouch = false、则复位计数器;
    否则计数器++;
    
    如果计数器>= 303、则报告长时间触摸;
    
    否则
    如果 bPrevTouch = true 并且计数器<= 33、则报告短触
    

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ling、

    这是我对3个传感器的新电路板进行的工作回调。 计划插入您建议的代码。 以上"bPrevTouch"是什么意思? 这个"(pButton->bSensorPrevTouch == 0)"?

    --------------------------------------------
    无效
    ButtonEventHandler (TSENSOR *pButton)

    已触摸 if (pButton -> bSensorTouch)//按钮

    Now_Key_Value = 0;
    if (pButton ->pCycle [0]-> pElements[0]-> bTouch = 1)

    Now_Key_Value |= Key1;
    LED1_ON;// LED1

    其他
    LED1_OFF;
    if (pButton->pCycle [1]->pElements[0])->bTouch =1)

    Now_Key_Value |= Key2;
    LED2_ON;// LED2

    其他
    LED2_OFF;
    if (pButton->pCycle [2]->pElements[0])->bTouch = 1)

    Now_Key_Value |= Key3;
    LED3_ON;//LED3

    其他
    LED3_OFF;


    if (pButton -> bSensorPrevTouch = 0)

    TA1CTL = tassel_SMCLK | MC__UP | TACLR;// SMCLK、向上计数模式、清除 TAR
    P2SEL0 |= BIT2; // P2.2选项选择


    else //未触摸按钮。 清除计时器并关闭 LED

    TA1CTL = 0;
    P1OUT &=~(BIT0 + BIT1 + BIT2 + BIT3);



    //保存参数(如果更新)
    APP_CheckForParamentterUpdate();
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Walter、

    是的、你是对的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ling、

    我们需要的行为是:

    正常短触- LED 亮起

    5秒长的触摸、释放-执行某些操作   

    10秒长按、释放-重置设备

    此致、

    首先、如果我在下面这样做、短触不起作用:

    if (pButton -> bSensorPrevTouch = 1)

     if (long_Press_Cntr <= 33)
     {

     }

    2.如果是5秒,则切换一次;如果 是10秒,则切换两次。  看起来还可以、如何在这两者之间睡觉?

    if (long_Press_Cntr >= 151)

        if (long_Press_Cntr < 303)
        {  
        LED4_ON;//LED4
        }

    if (long_Press_Cntr >= 303)

       LED4_ON;//LED4  

      //睡眠
       LED4_OFF;//LED4

      //睡眠
       LED4_ON;//LED4
       LED4_OFF;//LED4

    ------

    无效

    ButtonEventHandler (TSENSOR *pButton)

    已触摸 if (pButton -> bSensorTouch)//按钮


    if (pButton -> bSensorPrevTouch = 0)

    TA1CTL = tassel_SMCLK | MC__UP | TACLR;// SMCLK、向上计数模式、清除 TAR
    P2SEL0 |= BIT2;// P2.2选项选择

    /* Aztech 修改*/
    long_Press_Cntr = 0;
    /* Aztech 修改结束*/

    /* Aztech 修改*/
    其他

    long_Press_Cntr ++;

    /* Aztech 修改结束*/

    /* Aztech 修改*/

    //报告5秒/10秒/15秒长触控
    //将起作用,但不是5秒触摸删除,5秒触摸删除
    /* if (long_Press_Cntr == 151 || long_Press_Cntr == 303 || long_Press_Cntr == 453)

    LED4_OFF;//LED4
    LED4_ON;//LED4

    *

    /* Aztech 修改*/


    else //未触摸按钮。 清除计时器并关闭 LED

    TA1CTL = 0;
    /*Aztech 修改*/
    #if 0
    P2SEL0 &=~BIT2;
    P2OUT &=~(BIT2 + BIT3 + BIT4 + BIT4 + BIT4 + BIT6);
    其他
    P1OUT &=~(BIT0 + BIT1 + BIT2 + BIT3);
    //if bPrevTouch = true 且计数器<= 33、报告短触
    if (pButton -> bSensorPrevTouch = 1)

    if (long_Press_Cntr <= 33)

    //不在这里
    Now_Key_Value = 0;
    if (pButton ->pCycle [0]-> pElements[0]-> bTouch = 1)

    Now_Key_Value |= Key1;
    LED1_ON;// LED1

    其他
    LED1_OFF;
    if (pButton->pCycle [1]->pElements[0])->bTouch =1)

    Now_Key_Value |= Key2;
    LED2_ON;// LED2

    其他
    LED2_OFF;
    if (pButton->pCycle [2]->pElements[0])->bTouch = 1)

    Now_Key_Value |= Key3;
    LED3_ON;//LED3

    其他
    LED3_OFF;

    if (long_Press_Cntr >= 151)

        if (long_Press_Cntr < 303)
        {  
        LED4_ON;//LED4
        }

    if (long_Press_Cntr >= 303)

       LED4_ON;//LED4  
       LED4_OFF;//LED4
       LED4_ON;//LED4
       LED4_OFF;//LED4

    #endif
    /* Aztech 修改结束*/