极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 348|回复: 20

請問可以b如何取代delay 的指令

[复制链接]
发表于 2018-1-9 13:17:50 | 显示全部楼层 |阅读模式
本帖最后由 弘毅 于 2018-1-9 15:13 编辑

想請問各位大大
我想在我的程式中加入delay
可是delay 會影響整個程式的執行
請問要如何取代delay 的功能, 而不讓程式有問題呢
例如 :

  1. int pin = 10;
  2. int photocellPin1 = 3;
  3. int val2 = 0;

  4. void setup() {
  5. pinMode(pin, OUTPUT);
  6. }

  7. void loop() {
  8. val2 = digitalRead(photocellPin1);
  9. if(val2==HIGH){
  10. delay(5000);
  11. digitalWrite(pin, HIGH);
  12. }
  13. else{
  14. digitalWrite(pin, LOW);
  15. }
  16. }
复制代码

另外有個問題..
當 val2 成立時, 會delay 5秒後 pin HIGH
但是當 val2 不成立時,也會延遲幾秒才變成pin LOW
想請問要如何修改或用其他方式取代delay
感謝各位大大幫忙解惑
回复

使用道具 举报

 楼主| 发表于 2018-1-9 13:21:56 | 显示全部楼层
想請問各位大大
我想在我的程式中加入delay
可是delay 會影響整個程式的咦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-9 13:22:52 | 显示全部楼层
奇怪..怎麼只出現部分內容???
回复 支持 反对

使用道具 举报

发表于 2018-1-9 14:07:41 | 显示全部楼层
代码尽量使用code标签,否则会和表情等冲突。
回复 支持 反对

使用道具 举报

发表于 2018-1-9 17:11:09 | 显示全部楼层
可以使用定时器
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-9 21:25:58 | 显示全部楼层
弘毅 发表于 2018-1-9 14:07
代码尽量使用code标签,否则会和表情等冲突。

謝謝大大教導
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-9 21:26:27 | 显示全部楼层

可以請問大大要如何修改呢
謝謝~~
回复 支持 反对

使用道具 举报

发表于 2018-1-9 21:43:45 | 显示全部楼层
本帖最后由 最帅的老饼 于 2018-1-9 21:57 编辑

你没有说清楚你意图啊!!
你想实现什么功能?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-9 22:43:08 | 显示全部楼层
最帅的老饼 发表于 2018-1-9 21:43
你没有说清楚你意图啊!!
你想实现什么功能?

謝謝大大
在第一樓裡面有說明了
有甚麼方式可以取代delay 的指令
當val2 變HIGH 時 , 會delay 5秒後 pin HIGH
當val2 變LOW 時, 要馬上 pin LOW.
在delay的這5秒間, 如果val2 又變回LOW , 那pin 還是要變回LOW..
而delay 的部分要重新計算...以val2 變回HIGH 回時重新算5 秒..
這是我大約需要的功能
感謝喔~
回复 支持 反对

使用道具 举报

发表于 2018-1-9 23:30:11 | 显示全部楼层
Arduino  有个函数 millis() 是实时读取系统工作时间.
先做如下变量声明
unsigned long  Time1 = 0 ;
再在程序的合适位置
Time1 =  millis() ;
回复 支持 反对

使用道具 举报

高级模式  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2018-1-17 05:27 , Processed in 0.040444 second(s), 4 queries , File On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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