Arduino 在';{';代币
当检测到某个输入(引脚7处于高电平状态)时,我正试图通过串行端口向另一个Arduino发送一个值。在下面的代码中,我在编译时遇到以下错误:Arduino 在';{';代币,arduino,serial-port,Arduino,Serial Port,当检测到某个输入(引脚7处于高电平状态)时,我正试图通过串行端口向另一个Arduino发送一个值。在下面的代码中,我在编译时遇到以下错误: 'test' was not declared in this scope 如果我取消隐藏voidsend,则在循环内部,我会收到另一个错误: a function-definition is not allowed here before '{' token 守则: void setup() { SoftwareSerial tes
'test' was not declared in this scope
如果我取消隐藏voidsend
,则在循环内部,我会收到另一个错误:
a function-definition is not allowed here before '{' token
守则:
void setup() {
SoftwareSerial test (3, 2);
test.begin(1200);
pinMode(7, INPUT);
}
void loop() {
if ( digitalRead(7) == HIGH ) {
// void send() {
test.write(int value = 0);
a++;
delay(1000);
// }
}
}
预期结果
创建一个空区,传输每个周期增加的数字。试试这个,我修复了你的代码:
#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);
//}
}
}
#包括
软件系列测试(3,2);
int a=0;
无效设置(){
测试开始(1200);
pinMode(7,输入);
}
void循环(){
如果(数字读取(7)=高){
//作废发送(){
测试。写入(a);
a++;
延迟(1000);
//}
}
}
测试
必须在设置()函数
之外声明代码错误如下:
- 错误的函数调用
- 错误的函数声明
软件串行测试(3,2)
如果我们在两个引脚之间写一个空格,空闲的引脚就不知道要使用哪些引脚。
更准确地说,您正在调用名为SoftwareSerial()的库的一个方法,该方法需要属性、rxPin(Arduino板接收数据的位置)和txPin(Arduino板发送或传输数据的位置)。您还可以提供一个可选值,即反向逻辑布尔值。因此,当您键入SoftwareSerial test(3,2)时
您没有获得该方法所需的值
此错误可应用于任何方法调用。我们称之为“调用”
因为你没有定义方法,你只是在使用它。你
不需要知道它是如何工作的,只要知道你
需要给出两个值,以及您将收到的输出。
函数所需的值始终在圆括号内给出,
变量后面不带空格。返回值将为
存储在您创建的变量中,在本例中为test
既然我们了解了问题的原因,“test”未在此范围内声明
,那么让我们转到下一个问题
错误的函数声明
假设不调用函数,而是创建一个新函数。我们可以这样做,但要遵循一系列规则:
- 指定返回的变量。它可以是您想要的任何内容,一个布尔值(False或True),一个数字,等等。可能该方法不返回任何内容,在这种情况下,我们使用关键字
。在这种情况下,我们不希望接收任何内容,因此我们的方法声明以void
开始:void
- 为该函数指定一个名称,在本例中,我们将其称为
:send
- 指定所需的值。所需的属性在圆括号内给出。您需要指定该变量的名称及其类型。如果您需要多于一个值,请通过添加
:,
。如果不需要值,只需编写(int-value,Boolean-otherValue)
。在这种情况下,我们需要要发送的值()
- 返回指定的值。在本例中为nothing,因此我们不键入任何内容
可以找到有关声明函数的更多信息。
测试
在设置
方法的范围内定义,因此在循环
方法的范围内不可用。请将声明移出设置
以使其在两种方法中都可用。关于发送
方法。您正在尝试定义在loop
方法中调用它。将它移出,然后从那里调用它。在任何方法之外声明test
时,这三个方法都可以使用它。将a
的声明也移出所有方法。如果您想增加每次调用的值。感谢您的帮助。另外,如果我在void循环它可以工作,但是test.write()中没有定义“a”的任何形式吗?您可以使用前面定义的变量“a”作为send()函数的参数,然后将其传递给test.write(a)函数:void send(int var){……}。我希望这对您有所帮助
void
void send
void send(String message){
void send(String message){
test.write(message);
}