Re: [問題] arduino 延遲問題
看板Electronics作者yuleen123 (.......................)時間7年前 (2017/04/10 22:05)推噓0(0推 0噓 0→)留言0則, 0人參與討論串3/3 (看更多)
04/09 21:06
: → goodboylin77: 中間那段兩小時的會跑一兩分鐘就跑下面程式 04/09 21:08
看不出來問題出在哪, 不過可以改用別種寫法試看看
#define STATE_1 1
#define STATE_2 2
#define STATE_3 3
#define STATE_1_TIME 0
#define STATE_2_TIME 95000
#define STATE_3_TIME 7200000
uint8_t _currentState;
uint32_t _timestamp;
void setup()
{
......
......
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
digitWrite(ledPin1, HIGH);
analogWrite(ledPin2, 0);
analogWrite(ledPin3, 0);
analogWrite(ledPin4, 0);
analogWrite(ledPin5, 0);
_currentState = STATE_1;
_timestamp = millis();
......
......
}
void loop()
{
......
......
uint32_t now = millis();
uint32_t elapsed = now - _timestamp;
switch(_currentState)
{
case STATE_1:
if(elapsed > STATE_1_TIME)
{
digitalWrite(ledPin1, LOW);
analogWrite(ledPin2, 50);
analogWrite(ledPin3, 50);
analogWrite(ledPin4, 50);
analogWrite(ledPin5, 50);
_timestamp = now;
_currentState = STATE_2;
}
break;
case STATE_2:
if(elapsed > STATE_2_TIME)
{
analogWrite(ledPin2, 0);
analogWrite(ledPin3, 0);
analogWrite(ledPin4, 0);
analogWrite(ledPin5, 0);
_timestamp = now;
_currentState = STATE_3;
}
break;
case STATE_3:
......
......
break;
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.26.41.106
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1491833135.A.D6B.html
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):