此代码错误 - 函数参数太少 'void digitalWrite(uint8_t, uint8_t)'

This code error - too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'

您好,我是编码新手并编写了代码,但出现以下错误: 函数参数太少 'void digitalWrite(uint8_t, uint8_t)'。 是我做错了吗?

#include <Servo.h>

Servo Servo1;
Servo Servo2;

void setup() {
  Servo2.attach(9);
  Servo1.attach(10);
  pinMode(5, INPUT); //IR 1
  pinMode(4, INPUT); //IR 2
  pinMode(6, OUTPUT); //Standby LED#1 
  pinMode(7, OUTPUT); //Standby LED#2
}

void loop() {
  if (digitalWrite(4) == HIGH) {
    Servo1.write(60);
    delay(1000);
  } else {
    digitalWrite(6, HIGH);
  }
}

void loop() {
  if (digitalWrite(5) == HIGH) {
    Servo2.write(60);
    delay(1000);
  } else {
    digitalWrite(7, HIGH);
  }
}

digitalWrite 参数需要要写入的引脚和要设置引脚的值。你的发言,

if (digitalWrite(4) == HIGH)

应该是

if (digitalRead(4) == HIGH)

从 GPIO 读取数据时,您似乎应该使用 digitalRead 而不是 digitalWrite。有关详细信息,请参阅 https://arduino.stackexchange.com/q/35965

您的代码有几个问题。

让我们从最明显的开始。不能有多个循环函数。

Arduino 将调用 setup(),然后在无限循环中一遍又一遍地调用 loop()

编译器应该引发重新定义循环的错误。

第二期就是你问的那个。

digitalWrite可用于

  • 设置引脚的逻辑状态,如果引脚配置为输出
  • enable/disable 内部上拉电阻,如果引脚配置为 INPUT

您执行了以下操作:

 if(digitalWrite(4)== HIGH) 

所以你

  • 您为 digitalWrite 提供了几个参数。它需要一个引脚号和一个值(高或低)
  • 您在 if 语句中使用它,尽管它 return 没有任何值

由于引脚 4 配置为输入,您可能想使用 digitalRead 读取其状态。

使用 if (digitalRead(4) == HIGH) 或简单地 if(digitalRead(4))

请阅读 https://www.arduino.cc/en/Tutorial/Foundations/DigitalPins 和 Arduino 手册的其余部分