Closed. This question needs
details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息,并通过
editing this post阐明问题。
3个月前关闭。
Improve this question
首先,请接受我的道歉,我对arduino和一般编码完全陌生。尽管我有技术背景,但这对我来说是新的起点。
我正在尝试创建一个Arduino控制的水箱系统,以总结我正在尝试实现的目标...
系列浮子开关,当处于某些位置时,它将激活我的反渗透系统并填充水箱
4个按钮,一个按钮将油箱注满A级,第二个按钮将油箱注满B级,第三个按钮取消操作,一个按钮启动泵以排空油箱。另外,当浮子被触发时,加热器和循环泵将启动。 (水滴时系统将停用)。
一系列的LED灯还可以直观地指示过程状态。反渗透系统在操作前后也需要冲洗膜,因此添加了一行代码来处理该过程。
我已经写了我认为正确的东西,但是我只停留在代码的最后一部分(当前仅编写一个按钮过程来测试它是否可以在工作台上工作)。我收到消息
'digitalWrite'不能用作功能
我无法弄清楚如何清除此错误,因此可以上传到Uno并测试代码的第一部分。任何帮助都将是惊人的。
谢谢大家
Image of code代码的底部(digitalWrite(standby,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);
}
我认为您需要检查语句是否有效。
这些链接将帮助您:
https://www.arduino.cc/reference/en/language/structure/control-structure/if/
https://www.w3schools.com/cpp/cpp_conditions.asp
基本语法为:
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
的信息,请查看以下文章:
c++ bool question还有一些其他事情:如果您将代码复制到帖子中而不是链接图像,我想在这里表示赞赏。