Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino代码指示灯无法替代_Arduino - Fatal编程技术网

Arduino代码指示灯无法替代

Arduino代码指示灯无法替代,arduino,Arduino,交通信号灯一直亮着,而不是交替亮着。 想让它开10秒然后关10秒,无限期地继续。 不想使用延迟功能,因为需要在LED继续交替时执行其他操作。 谢谢 在此处使用elseif而不是if: if(digitalRead(red)==HIGH) { digitalWrite(red, LOW); } else if(digitalRead(red)==LOW) { digitalWrite(red, HIGH); } 在旧的解决方案中,每次红色变低,它都会在片刻后变

交通信号灯一直亮着,而不是交替亮着。 想让它开10秒然后关10秒,无限期地继续。 不想使用延迟功能,因为需要在LED继续交替时执行其他操作。 谢谢


在此处使用elseif而不是if:

 if(digitalRead(red)==HIGH)
 {
   digitalWrite(red, LOW);
 }     
 else if(digitalRead(red)==LOW)
 {
   digitalWrite(red, HIGH);
 } 

在旧的解决方案中,每次红色变低,它都会在片刻后变高。

您尝试读取配置为输出的端口。我不知道这是否应该工作,但如果你只是使用另一个端口作为输入,并反馈你想在该端口检查的信号,那就更清楚了。但是,我不确定检查您自己生成的信号的状态是否有意义(?)。此外,您的redcounter只是“活动等待”,arduino提供了一个延迟函数,它正是这样做的

int red=10;
int signal=11;

void setup()
{                
    pinMode(red, OUTPUT);   
    pinMode(signal, INPUT);   
    digitalWrite(red, LOW);
}

void loop()
{
    delay(1000);
    if(digitalRead(signal)==HIGH)
    {
        digitalWrite(red, LOW);
    }      
    if(digitalRead(signal)==LOW)
    {
        digitalWrite(red, HIGH);
    }  
}

代码中的两个问题是digitalread无法读取输出引脚,如果使用增量计数器,则无法准确表示时间。抱歉,如果我错过了一个括号或我在移动应用程序上正在做的事情。 使用以下命令:

int red = 10; // red traffic light LED on    pin 10
int redcounter;
boolean pinState = false;
int delayTime = 10000;

// the setup routine runs once when you press reset:
void setup() {
    // initialize the digital pin as an output.
    pinMode(red, OUTPUT);
    digitalWrite(red, LOW);
    redcounter = millis();
}

// the loop routine runs over and over again forever:
void loop() { 
    if((millis() - red counter) > delayTime) {
        redcounter=millis();

        if(pinState) {
            digitalWrite(red, LOW);
            pinState = false;
        }
        else {
            digitalWrite(red, HIGH);
            pinState = true;
        }
    }
}

也尝试了“if(redcounter==1000)”的几个值,但没有区别。您能提供完整的代码吗?可能未调用安装程序,因此未初始化redcounter?请使用redcounter>=1000而不是redcounter==1000。提供了完整的代码,Arduino在运行loopGood ideas之前首先自动运行设置功能下的任何内容,但LED仍然亮起
int red = 10; // red traffic light LED on    pin 10
int redcounter;
boolean pinState = false;
int delayTime = 10000;

// the setup routine runs once when you press reset:
void setup() {
    // initialize the digital pin as an output.
    pinMode(red, OUTPUT);
    digitalWrite(red, LOW);
    redcounter = millis();
}

// the loop routine runs over and over again forever:
void loop() { 
    if((millis() - red counter) > delayTime) {
        redcounter=millis();

        if(pinState) {
            digitalWrite(red, LOW);
            pinState = false;
        }
        else {
            digitalWrite(red, HIGH);
            pinState = true;
        }
    }
}