查看: 3586|回复: 2

【智能家居挑战赛】+智能宿舍改造三 模拟震动定时报警

[复制链接]
  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    110

    主题

    3429

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    9086
    最后登录
    2025-9-3
    发表于 2021-4-26 19:50:11 | 显示全部楼层 |阅读模式
    这次增加了简单的手动报警,在公司蜂鸣器太容易引起注意。增加按键功能,继续选用以前的震动电机模拟报警。按键定时10S后,驱动震动电机报警。如图1所示:

    实现代码如下:
    1. /*
    2. *********************************************************************************************************
    3. *        函数名称: Key_TimConfig
    4. *        功能说明: 按键启动定时器计数
    5. *        形参:
    6. *        返回值:
    7. *********************************************************************************************************
    8. */
    9. void Key_TimConfig(void)//定时器1用于计数
    10. {
    11.                 ctimer_config_t config;
    12.          static ctimer_match_config_t matchConfig0;
    13.         SYSCON->ASYNCAPBCTRL  = 1;
    14.         CLOCK_AttachClk(kFRO12M_to_ASYNC_APB);
    15.         CTIMER_GetDefaultConfig(&config);
    16.         CTIMER_Init(CTIMER1,&config);
    17.                  
    18.                  //match channel 0 configuration
    19.                  matchConfig0.enableCounterReset = true;
    20.                  matchConfig0.enableCounterStop = false;
    21.                  matchConfig0.matchValue = CLOCK_GetFreq(kCLOCK_BusClk);//1S
    22.                  matchConfig0.outControl = kCTIMER_Output_Toggle;
    23.                  matchConfig0.outPinInitState = false;
    24.                  matchConfig0.enableInterrupt = true;
    25.                  
    26.                  CTIMER_RegisterCallBack(CTIMER1,&ctimer_callback_table[0],kCTIMER_MultipleCallback);
    27.                  CTIMER_SetupMatch(CTIMER1,kCTIMER_Match_0,&matchConfig0);
    28. //                 CTIMER_StartTimer(CTIMER1);
    29.            CTIMER_StopTimer(CTIMER1);
    30. }
    复制代码
    1. /*
    2. *********************************************************************************************************
    3. *        函数名称: Key_process
    4. *        功能说明:对按键功能进行处理
    5. *        形参:
    6. *        返回值:
    7. *********************************************************************************************************
    8. */
    9. void Key_process(void)
    10. {
    11.         uint8_t i;
    12.         if(keyflag==1)
    13.         {
    14.                 CTIMER_StartTimer(CTIMER1);
    15.                 keyflag=0;
    16.         }       
    17.         if(Tfinishflag ==1)
    18.         {
    19.                 CTIMER_StopTimer(CTIMER1);
    20.                 GPIO_SetPinsOutput(GPIO,1,1u<<1);//振动电机
    21.                 for(i=0;i<5;i++)
    22.                 Delay_nms(0xAFFFF);
    23.                 GPIO_ClearPinsOutput(GPIO,1,1u<<1);
    24.                 Tfinishflag=0;
    25.         }
    26. }
    复制代码
    1. //按键中断
    2. void pint_intr_callback(pint_pin_int_t pintr, uint32_t pmatch_status)
    3. {
    4. //    PRINTF("\f\r\nPINT Pin Interrupt %d event detected.", pintr);
    5.          if (!GPIO_ReadPinInput(GPIO, 1, 8))
    6.         {
    7. //            GPIO_TogglePinsOutput(GPIO, 0, 1u << 30);
    8.                                                 keyflag =1;
    9.         }
    10. }
    复制代码

    将前两部分功能也组合到当前的工作中,整体如图2所示:

    整体效果如图3所示:
    还有很多需要增加和改进的,比如使用湿度传感器提醒下雨收被子,增加摄像头观测宿舍外是否是推销广告的等等。把当前项目的main.c文件放到附件中,一些初始化和功能实现的部分,可供需要的小伙伴参考。

    图2

    图2

    图1

    图1

    图3

    图3

    main.zip

    6.71 KB, 下载次数: 0, 下载积分: 威望 1

    加油哦
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-8-8 16:43
  • 签到天数: 1504 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4693

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10099
    最后登录
    2025-9-2
    发表于 2021-4-27 11:10:07 | 显示全部楼层
    楼主的按键算法还要优化一下。
    按键的优先级较低,使用中断的话间接提升了高优先级。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    110

    主题

    3429

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    9086
    最后登录
    2025-9-3
     楼主| 发表于 2021-4-27 14:38:40 | 显示全部楼层
    jobszheng5 发表于 2021-4-27 11:10
    楼主的按键算法还要优化一下。
    按键的优先级较低,使用中断的话间接提升了高优先级。 ...

    谢谢。昨天做了下功能,再学习。
    加油哦
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-4 09:26 , Processed in 0.083119 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表