作者yuleen123 (.......................)
看板Electronics
标题Re: [问题] arduino 延迟问题
时间Mon Apr 10 22:05:33 2017
: 推 goodboylin77: http://i.imgur.com/Cn3EUss.jpg 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://webptt.com/cn.aspx?n=bbs/Electronics/M.1491833135.A.D6B.html