Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 1966|回復: 3
打印 上一主題 下一主題

想請問計時動作問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2016-8-28 23:08:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問各位大大
我有用一組光遮開關去控制
A LED 會根據光遮動作...B LED 希望是觸發點亮後10秒就熄滅
目前我是這樣寫..但是B LED 觸發Ttimer 一次後..就不會復原(歸零)
請問要怎麼寫才可以呢? 謝謝

#include "Timer.h"
Timer t;
int photocellPin = 2;  //定義變量photocellsh=2,為電壓讀取端口。
int ledPin = 12;      
int pin = 11;
int val = 0;           //定義val變量的起始值
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(pin, OUTPUT);
t.pulse(pin, 1000, LOW);
  }
void loop() {
  val = analogRead(photocellPin);     //從傳感器讀取值
  if(val<=512){          //512=2.5V
  digitalWrite(ledPin, HIGH);           //當val小於512(2.5V)的時候,led亮。
  digitalWrite(pin, LOW);
}
else{
  t.update();
digitalWrite(ledPin, LOW);
}
}
2#
發表於 2016-8-29 09:00:41 | 只看該作者
本帖最後由 超新手 於 2016-8-29 09:03 編輯

因為你根本沒觸發過..
你要把 t.pulse( 寫在 if  中, 才是觸發
然後 t.update(); 寫在迴圈中, 它才能執行
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(pin, OUTPUT);
}
void loop() {
  val = analogRead(photocellPin);   
  if(val<=512){         
  digitalWrite(ledPin, HIGH);         
  t.pulse(pin, 1000, LOW);
}
else{
digitalWrite(ledPin, LOW);
}
t.update();
}

結果應該還是不太對.但.....至少比較像
還有....你的設定值是 1 秒, 不是 10 秒
3#
 樓主| 發表於 2016-8-29 19:35:54 | 只看該作者
謝謝大大
大大提供的寫法..但是在編譯時就不會過了說
我的寫法是在第一次觸發時可以達到要求
LED 點亮後1秒就會熄滅
但是光遮被擋住後, B LED 就不會處發點亮,會一直處於熄滅
看來是timer 一直在執行中,所以無法reset
這就是我最大問題,要讓timer reset 要如何觸發
請問有哪位大大可以幫忙解決
謝謝囉
4#
 樓主| 發表於 2016-9-8 19:18:57 | 只看該作者
請問有哪位大大可以幫忙解決
謝謝囉
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-4-29 22:08 , Processed in 0.194472 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表