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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 即使digitalRead处于低位,LED也会保持点亮_Arduino_Arduino Uno - Fatal编程技术网

Arduino 即使digitalRead处于低位,LED也会保持点亮

Arduino 即使digitalRead处于低位,LED也会保持点亮,arduino,arduino-uno,Arduino,Arduino Uno,我只是在创建一个简单的basic程序,但我不知道出了什么问题 我设置了三个引脚作为输出,三个引脚作为输入。当这三个引脚digitalRead==高时,它们会将LED设置为高,但我的LED始终保持高 这是我的Arduino代码: int LED_Low = 4; // Red LED int LED_Avg = 3; // Yellow LED int LED_High = 2; // Green Led int WaterLow = 7; int WaterAvg = 8; int Water

我只是在创建一个简单的basic程序,但我不知道出了什么问题

我设置了三个引脚作为输出,三个引脚作为输入。当这三个引脚digitalRead==高时,它们会将LED设置为高,但我的LED始终保持高

这是我的Arduino代码:

int LED_Low = 4; // Red LED
int LED_Avg = 3; // Yellow LED
int LED_High = 2; // Green Led

int WaterLow = 7;
int WaterAvg = 8;
int WaterHigh = 9;


void setup() {
  // Put your setup code here, to run once:
  pinMode(LED_Low,  OUTPUT);
  pinMode(LED_Avg,  OUTPUT);
  pinMode(LED_High, OUTPUT);

  pinMode(WaterLow,  INPUT);
  pinMode(WaterAvg,  INPUT);
  pinMode(WaterHigh, INPUT);
}

void check(){
    if(digitalRead(WaterLow) == HIGH){ // If Water level is low
        digitalWrite(ledLow, HIGH); // Turn on red LED indication water level is low
    }
    else{
        digitalWrite(ledLow, LOW);
    }
    if(digitalRead(WaterAvg) == HIGH){ // If water level is medium
        digitalWrite(ledAvg, HIGH); // Turn on yellow LED indicating water level is average
    }
    else{
        digitalWrite(ledAvg, LOW);
    }
    if(digitalRead(WaterHigh) == HIGH){ //
        digitalWrite(ledHigh, HIGH); //
    }
    else{
        digitalWrite(ledHigh, LOW);
    }
}

void loop() {
    // Put your main code here, to run repeatedly:
    check();
}


在上图中,我已将引脚2、3和4上的led与1.5千欧姆电阻器相连,引脚7、8和9上有三根导线,它们将接收来自5伏引脚的输入并打开led。因此,5伏引脚连接到电源总线的正极端子,并串联9.1*2个电阻器,然后该导线连接到引脚2、3和4。

我发现了问题。我的代码还可以。这是我的电路


我声明接收输入的引脚未接地。

您可以通过两个案例来实现这一点

  • 定义延迟

    if (digitalRead(WaterLow) == HIGH) // If Water level is low
    {
        digitalWrite(ledLow, HIGH); // Turn red LED indication water level is low
        delay(2000);
    }
    else
    {
        digitalWrite(ledLow, LOW);
    }
    
  • 创造这样的条件

    int stateled = LOW;
    int previous = LOW;
    long time = 0;
    long debounce = 200;
    
    void loop()
    {
        stateButton = digitalRead(WaterLow);
        if (stateButton == HIGH && previous == LOW && millis() - time > debounce)
        {
            if(stateLED == HIGH)
            {
                stateLED = LOW;
            }
            else
            {
                stateLED = HIGH;
            }
            time = millis();
        }
        digitalWrite(ledlow, stateLED);
        previous == stateButton;
    }
    

  • 你能贴一张你的Arduino的照片吗?我用图片和描述更新了我的问题