Arduino uno 闪烁的LED';It’他马上就不工作了

Arduino uno 闪烁的LED';It’他马上就不工作了,arduino-uno,Arduino Uno,我的arduino项目有问题。它应该有两种模式:正常模式和危险模式。这两个控件之间的切换由VisualStudio窗体控制。正常模式下闪烁的LED工作正常,但当我尝试切换到危险模式时,它们闪烁得非常微弱。在危险模式下,红色、黄色和蓝色LED必须同时闪烁。我的代码使得只有红色led正常工作。我猜这与我在正常模式下使用另外两个有关 void循环(){ 无符号长currentMillisYellow=millis(); 无符号长currentMillisBlue=millis(); 无符号长curre

我的arduino项目有问题。它应该有两种模式:正常模式和危险模式。这两个控件之间的切换由VisualStudio窗体控制。正常模式下闪烁的LED工作正常,但当我尝试切换到危险模式时,它们闪烁得非常微弱。在危险模式下,红色、黄色和蓝色LED必须同时闪烁。我的代码使得只有红色led正常工作。我猜这与我在正常模式下使用另外两个有关

void循环(){
无符号长currentMillisYellow=millis();
无符号长currentMillisBlue=millis();
无符号长currentMillisRed=millis();
无符号长电流毫绿色=毫();
int steerAngle=map(模拟读数(电位计),0,1024,-100,100);
//正常状态闪烁
如果(rightCounter>0&&steerAngle>0&&state==NormalState){
如果(当前毫蓝色-先前毫蓝色>闪烁间隔蓝色){
先前的毫蓝色=当前的毫蓝色;
LedBluseState=!LedBluseState;
数字写入(LED蓝色,LED蓝色状态);
}
}否则{
rightCounter=0;
数字写入(LED蓝色,低电平);
}
如果(leftCounter>0&&steerAngle<0&&state==NormalState){
如果(currentMillisYellow-previousMillisYellow>blinkIntervalYellow){
previousMillisYellow=当前MillisyEllow;
ledYellowState=!ledYellowState;
数字写入(LED黄色,LED黄色状态);
}
}否则{
leftCounter=0;
数字写入(LED黄色,低电平);
}
//危险状态闪烁
如果(state==HazardState){//为什么led亮度这么低?(需要固定)
如果(currentMillisYellow-previousMillisYellow>blinkIntervalYellow){
previousMillisYellow=当前MillisyEllow;
ledYellowState=!ledYellowState;
数字写入(LED黄色,LED黄色状态);
}
}
如果(状态==危险状态){
如果(当前毫蓝色-先前毫蓝色>闪烁间隔蓝色){
先前的毫蓝色=当前的毫蓝色;
LedBluseState=!LedBluseState;
数字写入(LED蓝色,LED蓝色状态);
}
}
如果(状态==危险状态){
如果(currentMillisRed-previousMillisRed>blinkIntervalRed){
previousMillisRed=当前Millisred;
ledRedState=!ledRedState;
数字写入(ledRed,ledRedState);
}
}

您的闪烁间隔是否足够长,以产生足够的延迟,以便可以看到LED正确闪烁?据我所知,您正在尝试闪烁它们,即打开它们,然后关闭一小段时间。在这种情况下,您可能更喜欢定义打开和关闭间隔,如教程中的第二个示例代码所述

此外,正如@Juraj所说,您的
else
块正在关闭它们,这可能是您看到暗淡闪烁的原因

我将定义状态,而不是比较if条件中的状态。类似于:

typedef enum {
    NORMAL,
    HAZARD
} Modes;

Modes state = NORMAL;
然后,在主循环中:

if( state == NORMAL){

// execute LEDs blinking

} else if(state == HAZARD){

// execute LEDs blinking

}

为什么要分开电流毫安?否则,在正常状态下,您将关闭LED