Robofun 機器人論壇

標題: 想請問計時動作問題 [打印本頁]

作者: mickey    時間: 2016-8-28 23:08
標題: 想請問計時動作問題
想請問各位大大
我有用一組光遮開關去控制
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);
}
}
作者: 超新手    時間: 2016-8-29 09:00
本帖最後由 超新手 於 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 秒
作者: mickey    時間: 2016-8-29 19:35
謝謝大大
大大提供的寫法..但是在編譯時就不會過了說
我的寫法是在第一次觸發時可以達到要求
LED 點亮後1秒就會熄滅
但是光遮被擋住後, B LED 就不會處發點亮,會一直處於熄滅
看來是timer 一直在執行中,所以無法reset
這就是我最大問題,要讓timer reset 要如何觸發
請問有哪位大大可以幫忙解決
謝謝囉
作者: mickey    時間: 2016-9-8 19:18
請問有哪位大大可以幫忙解決
謝謝囉




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2