上下文 你好 当引脚7处于高电平状态时,我试图通过串行向另一个Arduino发送一个名为“ a”的数字值。在代码中,当我尝试对其进行编译时出现错误:-在此范围内未声明'test'-但我不知道这是什么错误。另外,如果我取消隐藏void'send',也就是在循环内部,我会得到错误-在'{'标记之前-不允许使用函数定义。 有人可以帮助我吗? 谢谢
我尝试过的 我试图从书面函数中定义变量'a'
代码
#include <SoftwareSerial.h>
void setup() {
SoftwareSerial test (3,2);
test.begin(1200);
pinMode(7,INPUT);
}
void loop() {
if ( digitalRead(7) == HIGH ) {
//void send(){
test.write(int a=0);
a++;
delay(1000);
//}
}
}
预期的结果和错误 我希望编译代码时不会出错errors并创建一个称为send的void,该void传输每个周期增加的数字。
此处不允许在'{'标记之前使用函数定义-当我取消隐藏void send
'test'-当我隐藏'send'
答案 0 :(得分:0)
尝试一下,我修复了您的代码:
#include <SoftwareSerial.h>
SoftwareSerial test(3, 2);
int a=0;
void setup() {
test.begin(1200);
pinMode(7,INPUT);
}
void loop() {
if ( digitalRead(7) == HIGH ) {
//void send(){
test.write(a);
a++;
delay(1000);
//}
}
}
test
必须在setup()
函数外部声明
答案 1 :(得分:0)
代码错误是:
让我们解决它们:
要正确初始化串行通信,我们需要分配变量名称,然后加上引脚。
SoftwareSerial test(3, 2)
如果我们在两者之间写一个空格,则IDLE不知道您要使用哪些引脚。
更准确地说,您正在调用SofwareSerial库中名为SoftwareSerial()的方法,该方法需要属性,rxPin(Arduino开发板接收数据的地方)和txPin(Arduino开发板发送或传输数据的地方) )。您还可以提供一个可选值inverse_logic布尔值。因此,当您输入SoftwareSerial test (3,2)
时,不会为该方法提供所需的值。
此错误可以应用于任何方法调用。我们称之为“通话” 因为您没有定义方法,所以您只是在使用它。您 不需要知道它是如何工作的。知道你就足够了 需要提供两个值,以及您将收到的输出。 函数所需的值始终在圆括号内, 在变量后面没有空格。返回的值将是 存储在您创建的变量中,在这种情况下为
test
。
现在我们已经了解了问题的原因'test' was not declared in this scope
,让我们转到下一个问题。
让我们假设,我们要创建一个新函数,而不是调用一个函数。我们可以做到,但是要遵循一系列规则:
void
。在这种情况下,我们什么都不想接收,因此我们的方法声明以void
开头: void
send
: void send
,
:(int value, Boolean otherValue)
将它们分开。如果不需要值,只需写()
。在这种情况下,我们需要我们要发送的值。 void send(String message){
void send(String message){
test.write(message);
}
有关声明函数的更多信息,请参见here。