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
Error handling ';digitalWrite';不能用作函数-新问题_Error Handling_Arduino - Fatal编程技术网

Error handling ';digitalWrite';不能用作函数-新问题

Error handling ';digitalWrite';不能用作函数-新问题,error-handling,arduino,Error Handling,Arduino,首先,请接受我的道歉,我对arduino和一般的编码是完全陌生的。虽然我有技术背景,但这对我来说是一个新领域 我正在尝试创建一个Arduino控制的水箱系统,以总结我试图实现的目标 系列浮子开关,当处于特定位置时,将激活我的反渗透系统并填充水箱 4个按钮,一个用于将油箱加注至A级,第二个用于加注至B级,第三个用于取消操作,另一个用于启动泵以排空油箱。此外,当浮子触发时,加热器和循环泵将启动。(当水滴落下时,系统将停用) 一系列的LED灯还可以提供过程状态的视觉指示。RO系统在运行前后也需

首先,请接受我的道歉,我对arduino和一般的编码是完全陌生的。虽然我有技术背景,但这对我来说是一个新领域

我正在尝试创建一个Arduino控制的水箱系统,以总结我试图实现的目标

  • 系列浮子开关,当处于特定位置时,将激活我的反渗透系统并填充水箱

  • 4个按钮,一个用于将油箱加注至A级,第二个用于加注至B级,第三个用于取消操作,另一个用于启动泵以排空油箱。此外,当浮子触发时,加热器和循环泵将启动。(当水滴落下时,系统将停用)

一系列的LED灯还可以提供过程状态的视觉指示。RO系统在运行前后也需要膜冲洗,因此增加了一行代码来处理此过程

我已经写了我认为正确的东西,但我仍停留在代码的最后一部分(目前只编写了一个按钮流程,以测试它是否能在工作台上工作)。我明白了

“digitalWrite”不能用作函数

我不知道如何清除此错误,以便上传到我的Uno并测试代码的第一部分。任何帮助都将是惊人的

谢谢大家

代码的底部部分(digitalWrite(待机,高);按说明给出错误消息

 if (!digitalRead(empty)) { // "!" is used to negate, you can look at it like "not"
      digitalWrite(heater, LOW);
      digitalWrite(sysrunning, LOW);
      digitalWrite(standby, HIGH);
    }
    delay(300);
  }

我想你需要检查一下if语句是如何工作的

这些链接将帮助您:

基本语法是:

if (condition) {
  // block of code to be executed if the condition is true
}
在您的具体案例中,我认为它可能是这样的:

...
digitalWrite(flushroled,LOW);
int isWatsenwat = digitalRead(watsenwat);
if(isWatsenwat==HIGH){
    digitalWrite(flushroled,HIGH);
    ...
    ...
    digitalWrite(heater,HIGH);
    int isEmpty = digitalRead(empty);
    if(isEmpty==LOW){
        digitalWrite(heater,LOW);
        digitalWrite(sysrunning,LOW);
        digitalWrite(standby,HIGH);
    }
    delay(300);
}
虽然这可能编译得很好,但您可以将其编写得更紧凑:

...
digitalWrite(flushroled,LOW);
int isWatsenwat = digitalRead(watsenwat); //isWatsenwat is 0 or 1
if(isWatsenwat){ // if it is 1...
    digitalWrite(flushroled,HIGH);
    ...
    ...
    digitalWrite(heater,HIGH);
    int isEmpty = digitalRead(empty);
    if(!isEmpty){  // "!" is used to negate, you can look at it like a "not"
        digitalWrite(heater,LOW);
        digitalWrite(sysrunning,LOW);
        digitalWrite(standby,HIGH);
    }
    delay(300);
}
澄清: 如果你将
val
HIGH
相比较,比如
(val==HIGH)
你基本上将
1
0
1
相比较,结果是
1
0
,所以你可以直接使用你原来的
1
0
(val)

您可以编写得更简洁:您不需要将此值赋给变量。您可以做的只是:

...
digitalWrite(flushroled,LOW);
if(digitalRead(watsenwat)){
    digitalWrite(flushroled,HIGH);
    ...
    ...
    digitalWrite(heater,HIGH);
    if(!digitalRead(empty)){  // "!" is used to negate, you can look at it like "not"
        digitalWrite(heater,LOW);
        digitalWrite(sysrunning,LOW);
        digitalWrite(standby,HIGH);
    }
    delay(300);
}
如果你想知道更多关于什么是
true
false
的信息,请查看以下帖子:


还有一点:如果你将代码复制到文章中而不是链接图像,我想这是非常感谢的。

如果val=digitalRead(空);?那是什么(如果我做得对的话)按下按钮,将启动排放泵并清空水箱,基本上为继电器供电。一旦启动泵,将关闭水箱中加热器和冷凝泵的继电器,以保护它们:)如果val=数字读取(清空);(val==低);可能会把编译器搞糊涂,就像我一样。如果“empty”是pin码,请尝试:val=digitalRead(empty);如果(val==LOW){code goes here}@ocrdu谢谢,您建议我将其更改为/替换为please吗?“try:”后面的位。你的“如果”语法是关闭的;首先用digitalRead读取val,然后执行“如果(val==LOW){digitalWrite等}”,如果高出几行,同样适用于watsenwat。感谢您提供的详细答案,我将尽快尝试,并让您知道结果!我似乎无法像你那样把代码粘贴进去,我会继续阅读,下次再把它弄对。再次感谢您的详细回复:)感谢@Ingumeta的修改,我现在已经将这些修改加入到代码中,链接真的帮助了我的理解。遗憾的是,代码仍然返回错误digitalWrite不能用作函数,红色框突出显示最后一行digitalWrite:
code
如果(!digitalRead(empty)){/“!”用于求反,您可以将其视为“not”digitalWrite(加热器,低);digitalWrite(系统运行,低);digitalWrite(待机,高);}delay(300);我刚刚看到代码中缺少一些分号:
delay(x);
但我认为还需要更多……也许你可以发布所有代码。嗨@Ingumeta,很抱歉我的无能,发布整个文库的最佳方式是什么,因为它太大,无法发表评论,我的问题已经结束。我可以将文库上传到某个地方吗?再次非常感谢你查看这个:)我的意思是只发布你的ROSystem.ino。当然,如果你把它上传到某个地方,我会看一看。