单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:2416|回复:4
打印上一主题下一主题

Arduino程序 把按键作为开关的方法 (不用delay)

[复制链接]
跳转到指定楼层
楼主
ID:989772发表于 2022-1-9 10:18|只看该作者回帖奖励
(原创)  不用delay, 不阻塞运行!

**************************************
int   b2 = 0;     //button state,  default  HIGH
bool b2on = false;
int  wait = 0;     //counter when key is hold

void setup() {
   // initialize the LED pin as an output:
   pinMode(ledPin1, OUTPUT);
   // initialize the pushbutton pin as an input:
   pinMode(buttonPin1, INPUT);
}

void loop() {
   // read the state of the pushbutton value:
   b2 = digitalRead(buttonPin1);

   if( b2 == LOW )   // pressed,  from HIGH->LOW

   {
   wait++;         // wait for release
   }
  
   if( b2&& wait > 39)           // button return back to HIGH, and  LOW for 39 times

{
   b2on = !b2on;             // one CLICK  finished!
   wait = 0;                   // reset
   }

   if (b2on) {
   // turn LED on:
   digitalWrite(ledPin1, HIGH);
   } else {
   // turn LED off:
   digitalWrite(ledPin1, LOW);
   }
**************************************

评分

黑币 +50
收起理由
+ 50
共享资料的黑币奖励!

查看全部评分

沙发
ID:137736发表于 2022-8-22 18:37|只看该作者
延时用了wait++,仍然阻塞
板凳
ID:137736发表于 2022-8-22 18:38|只看该作者
用状态机和系统计数器才行
地板
ID:989772发表于 2022-9-12 08:10|只看该作者
"wait > 39"   这里的 39 根据你的芯片调节到合适的值
5#
ID:830831发表于 2022-9-12 18:11|只看该作者
用状态机  给力

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网