【问题标题】:Arduino - switch off all LEDs but keep one on automationArduino - 关闭所有 LED,但保持一个自动化
【发布时间】:2016-11-26 04:28:41
【问题描述】:

我需要将所有 LED 设置为 LOW,除了我想设置为 HIGH 的那个。 目前,我必须向所有 LED 发送特定请求,以确保前一个 LED 设置为低电平。如果我将这个逻辑应用到很多 LED 上,代码会很长。

有没有办法说

问题

  • 将 led 设置为高,但所有其他设置为低?

此代码将打开 LED。

if (readString.indexOf("?wall01_02") > 0) {
        digitalWrite(led, HIGH);
        digitalWrite(led1, LOW);
        digitalWrite(led2, LOW);
        digitalWrite(led3, LOW);

下次我要向 led1 发送请求时,我还必须关闭之前的 LED led。

 if (readString.indexOf("?wall01_01") > 0) {
            digitalWrite(led, LOW);
            digitalWrite(led1, HIGH);
            digitalWrite(led2, LOW);
            digitalWrite(led3, LOW);

【问题讨论】:

  • 如果你先把它们全部关掉,然后再打开你想要的那个呢?
  • 我想点亮的那盏,然后我想打开另一盏灯,但是只要我不将其调低,我之前打开的那盏就一直亮着。
  • 我知道。但是你在问,“我如何在不使我的代码很长的情况下关闭除一个之外的所有功能?”答案是,“将它们全部关闭,然后重新打开您想要的那个。”

标签: c# arduino


【解决方案1】:

我不能写评论。

为什么不是一个int数组,像这样:

#define ledArray 4
int ledPins[ledArray] = {1, 3, 7, 14};

if(readString.indexOf("?wall01_02") > 0) {
    lightsOff(led);
}

if(readString.indexOf("?wall01_01") > 0) {
    lightsOff(led1);
}

void lightsOff(int led) {
    int i;
    for(i = 0; i < ledArray; ++i) {
        digitalWrite(ledPins[i], (ledPins[i] != led) ? LOW : HIGH);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多