查看: 3417|回复: 3

[求助] 使用按鍵控制程序的啓動

[复制链接]
  • TA的每日心情
    郁闷
    2016-5-12 17:57
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2016-5-12 18:22:43 | 显示全部楼层 |阅读模式
    分享到:
    現在想用一個按鍵來控制程序的啓動與關閉。

    t.jpg

    按鍵接的是Raspberry的GPIO6.
    當按鍵按一下的時候,GPIO接地,程序開始運行。
    當再按一次的時候,程序停止。

    現在的問題是,如果按一次按鍵的話,GPIO僅僅接地一瞬間后就又被拉高了。程序衹執行了一次就停止了,不能繼續循環下去。
    int main(){
            ADC_Init();
            while(true){
                    if(digitalRead(KEY) == 0){                  //GPIO6 接地,按鍵按下
                            ADC();                                        //開始讀數據
                            printf("%d", voltage);
                    }
            }
    }

    并且根本實現不了再按一次程序停止。無奈了。。。。。

    請問如何可以達到這樣的要求?

    謝謝!






    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-5-11 10:52
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2016-5-13 10:56:13 | 显示全部楼层
    大概整理一下我跟大神讨论的过程:
    1.需要额外一个变量  每次检测到按下  就翻转 的一个变量(所以这个代码需要再定义一行,然后用来检测判断,这个程序就只是一个过程,所以只运行一次)
    2.if(digitalread(key)==0)  按下过=1;
    if(按下过==1){
    ADC( )......
    }、
    3.实际上  还可以稍微扩展一下,做成  第一次按下 就开始,再按一次,又停止。当然 这个  按下过 变量  要在 while 之前,初始化成 0 .
    4.话说这个框架不是很好,缺点是  如果 是在 adc执行的时候按下 或 在 printf 执行的时候按下,会木有响应。
    5.其实还有其他问题。 比如   你那个 按键检测的函数。是否做了防抖,是否做了  释放检测 。是否有 长按  短按  的区分。因此 这类的设计 通常需要某种并行机制来解决。比如 ADC的 dma方式。比如 按键的中断方式。才能让两者相互不影响。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-5-11 10:52
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2016-5-13 10:56:58 | 显示全部楼层
    还有个大神让你先点LED灯,从基础的开始
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-5-12 17:57
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

     楼主| 发表于 2016-5-18 13:54:31 | 显示全部楼层
    yerun 发表于 2016-5-13 10:56
    大概整理一下我跟大神讨论的过程:
    1.需要额外一个变量  每次检测到按下  就翻转 的一个变量(所以这个代码 ...

    多謝解答,

    我這幾天已經開始按您的方法來繼續加工了一下。

    我在程序前也加了防抖測試,但是現在按下后還是有點小問題。稍後我把代碼貼出來。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 10:24 , Processed in 0.135504 second(s), 22 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.