如何让这个arduino小程序在延迟后,切换前,重新检测一次if条件?
if(rvotage>49&&rhomecr<4&&digitalRead(swich))//电压大于49v电流小于4A逆变器状态开时{delay(3000);//延迟3...
if (rvotage > 49 && rhomecr < 4 && digitalRead(swich)) //电压大于49v 电流小于4A 逆变器状态开时
{
delay(3000); //延迟30秒
h2s(); //转换到太阳能
} 展开
{
delay(3000); //延迟30秒
h2s(); //转换到太阳能
} 展开
2个回答
展开全部
#include "xxx"
#define TIME_100MS 1
#define TIME_1S 10
#define TIME_5S 50
#define TIME_10S 100
#define TIME_30S 300
typedef struct
{
uint16_t modeChange;
uint16_t ledShow;
}timeCnt_t;
timeCnt_t timeCnt;
const byte ledPin = 13; 雀饥 // Use the LED on pin 13.
void setup(void)
{
//system init...
// LED init...
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW); // Turns the LED off.
}
void loop (void)
{
//task 1
if (rvotage > 49 && rhomecr < 4 && digitalRead(swich)) //电压大于49v 电流小于4A 逆变器顷漏返状态开时
{
if (timeCnt.modeChange > TIME_30S)
{
h2s(); //转换到太阳能
}
}
else
{
timeCnt.modeChange = 0;
}
//task 2
if (timeCnt.ledShow > TIME_1S)
{
timeCnt.ledShow = 0;
digitalwrite(ledpin,!digitalread(ledpin));
}
//task 3
// ...
}
//定时器中断调用,arduino有现成的MsTimer2库,设置下就好。
void TimeCbk (void) //be called every 100ms
{
(timeCnt.modeChange 搜销< 65535) ? (timeCnt.modeChange++) : (timeCnt.modeChange = 0);
(timeCnt.ledShow < 65535) ? (timeCnt.ledShow++) : (timeCnt.ledShow = 0);
}
2015-05-29
展开全部
再加一个判断呗
更多追问追答
追问
你好,怎样写?
追答
if (rvotage > 49 && rhomecr 49 && rhomecr < 4 && digitalRead(swich)) //电压大于49v 电流小于4A 逆变器状态开时 { h2s(); //转换到太阳能
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询