如何让这个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(); //转换到太阳能
}
展开
 我来答
bjdqe1024
2015-05-30 · TA获得超过653个赞
知道小有建树答主
回答量:774
采纳率:50%
帮助的人:420万
展开全部
#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(); //转换到太阳能
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式