Funpack第七期_DM164137_按键_电位器采样
通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
标签
Funpack
DM164137
litter47
更新2021-04-21
683

Funpack第七期说明文档

  我是来自安徽师范大学18级通信工程的一名学生,本次参加的是funpack的第七期活动,下面就开始我所完成的任务进行展示.

  本期活动参与者可从下面两个任务中任选其一完成:

任务一:通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)

任务二:可选择从Digi-Key购买mikroBUS扩展模块,插在本期板卡上完成任意一个项目.

我所完成的是任务一的内容,下面对本次所使用的评估板及传感器等元件进行介绍.

本期开发板Microchip DM164137支持microchip的8,14,20引脚8位PICMCU.插槽两侧的双排扩展接口提供与PICMCU上所有引脚的连接灵活性.编程/调试是通过PIC板载调试器完成,无需外部编程工具.开发板设计了多种供电方式,可以通过电源插头或者直接引入电源供电,也可通过USB接口供电。核心芯片支持5V和3.3V供电。板上包括一组4个指示LED,mTouch触摸按钮、按键开关以及可变电位器。 此外,它还具有蓝牙模块接口和以及mikroBUS标准接口,可支持上百种基于mikroBUS的扩展模块。

Fh4yEnjXVvCnXFUej4ByGZU3SHz3

代码如图,主要代码为通过判断按键按下时间来亮起相对应的led,以及adc采样后的串口打印:

BTN_STATE button_check(uint8_t button)//enum mtouch_button_names button)
{
    switch(Button0_state[button])
    {
        case BTN_RELEASE:
        {
            if(Button0Touch)
            {
                Button0_state[button] = BTN_TOUCH;
            }
            break;
        }
        case BTN_TOUCH:
        {
            if(Button0Touch)
            {
                if(Button0_cnt>SHORT_PUSH_CNT)
                {
                    Button0_state[button] = SHORT_PUSH;
                    printf("SHORT\n\r");
                    Button0_cnt = 0;
                }
                Button0_cnt++;
            }
            else
            {
                Button0_state[button] = CLICK;
                Button0_cnt = 0;
            }
            break;
        }case DOUBLE_CLICK:
        {
            if(!Button0Touch)
            {
                Button0_state[button] = BTN_RELEASE;
                Button0_cnt = 0;
            }
            break;
        }
        case SHORT_PUSH:
        {
            if(Button0Touch)
            {
                if(Button0_cnt>LONG_PUSH_CNT)
                {
                    Button0_state[button] = LONG_PUSH;
                    printf("LONG");
                    LED_D6_Toggle();
                }
                Button0_cnt++;
            }
            if(!Button0Touch)
            {
                LED_D5_Toggle();
                Button0_state[button] = BTN_RELEASE;
                Button0_cnt = 0;
            }
            break;
        }
        case LONG_PUSH:
        {
            if(!Button0Touch)
            {
                Button0_state[button] = BTN_RELEASE;
                Button0_cnt = 0;
            }
            break;
        }
        case WAIT_DOUBLE:
        {
            if(Button0Touch)
            {
                LED_D4_Toggle();
                Button0_state[button] = DOUBLE_CLICK;
            }
            else
            {
                if(Button0_cnt>WAIT_DOUBLE_CNT)
                {
                    Button0_state[button] = BTN_RELEASE;
                    Button0_cnt = 0;
                }
                Button0_cnt++;
            }
            break;
        }
        default:break;
    }
}

上述代码实现的是按键的状态判别,演示效果与任务相符,示例图如下

FgQf0RvRXCIU9CKNrQA8q4Sa59ItFpVTTBucaE0JU2yk8Nt2ptndjAr5FqqcsGbRXSCZ5Moq2AsmyAKtEWHt

FrZbbz05D1i0S4d1e_DO55IpplU-

下面代码为adc采样及串口打印:

 case CLICK:
        {
            if(!Button0Touch)
            {
                LED_D7_Toggle();
                adcResult = ADCC_GetSingleConversion(ANC0);
                printf("ADC_result= %d\n\r", adcResult); 
                Button0_state[button] = WAIT_DOUBLE;
                Button0_cnt = 0;
            }
            break;

下图为演示图:

FgjUt2EU6HXvj43Xi0kfvJZRLxZ9Fh_gxvDsJjMtRZeRktBYy3M13kuJ

以上就是本次活动的全部内容,再次感谢funpack让我有机会接触到不一样的东西,让我学到了更多.

附件下载
lsq.X.rar
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号