C++ Arduino编程中的错误
我收到以下错误: 错误:在“(”标记之前需要构造函数、析构函数或类型转换 以下是我编写的源代码:C++ Arduino编程中的错误,c++,arduino,C++,Arduino,我收到以下错误: 错误:在“(”标记之前需要构造函数、析构函数或类型转换 以下是我编写的源代码: void setup() { pinMode(1,OUTPUT); [...] pinMode(13,INPUT); } int i = 1; bool pushed = digitalRead(13); bool val = 0; randomSeed(analogRead(0)); void loop() { if (
void setup() {
pinMode(1,OUTPUT);
[...]
pinMode(13,INPUT);
}
int i = 1;
bool pushed = digitalRead(13);
bool val = 0;
randomSeed(analogRead(0));
void loop() {
if (pushed == 1) {
for (i = 1; i < 9; i++) {
val = random(2);
digitalWrite(i,val);
}
}
}
void setup(){
pinMode(1,输出);
[...]
pinMode(13,输入);
}
int i=1;
bool push=digitalRead(13);
布尔值=0;
随机种子(模拟读取(0));
void循环(){
如果(推送==1){
对于(i=1;i<9;i++){
val=随机(2);
数字写入(i,val);
}
}
}
变量和设置正常;错误位于for
行中。有人能告诉我如何解决此问题吗
(编辑:添加了脚本的开头,对演示文稿感到抱歉(这里的第一个问题)
(编辑:看起来错误不在“i”定义中。如果有帮助的话,我正在使用Arduino UNO SMD版本(以及IDE的Arduino alpha 0022 linux版本))
编辑:好了,伙计们,现在解决了。看来我的Arduino IDE版本没有完全下载,我把randomSeed
放错地方了(它应该在设置
功能中。)(当我在更新之前将它放入设置
函数时,它显示了一条错误消息,说/opt/arduino/lib/math.h缺少了一些东西(或者类似的东西,我没有完整的消息))。感谢您的帮助,我希望我能很快在arduino中帮助您
for (int i = 1; i < 9; i++)
同样在C89中,所有声明都必须在块的左大括号后面,不能随意混合声明和语句。在C中(C99之前),不允许在
for
循环的第一个表达式中定义新变量。请尝试在函数顶部声明变量i
。您似乎有一条语句randomSeed(analogRead(0));
浮动在设置()和循环()之间
函数定义
将其和任何其他IO操作移动到setup()
功能的末尾,以便在设置管脚方向后阅读:
int i = 1;
bool pushed;
bool val = 0;
void setup() {
pinMode(1,OUTPUT);
[...]
pinMode(13,INPUT);
pushed = digitalRead(13);
randomSeed(analogRead(0));
}
void loop() {
if (pushed == 1) {
for (i = 1; i < 9; i++) {
val = random(2);
digitalWrite(i,val);
}
}
}
inti=1;
布尔推;
布尔值=0;
无效设置(){
pinMode(1,输出);
[...]
pinMode(13,输入);
按下=数字读取(13);
随机种子(模拟读取(0));
}
void循环(){
如果(推送==1){
对于(i=1;i<9;i++){
val=随机(2);
数字写入(i,val);
}
}
}
这将只需按下一次即可读取插脚13的值(例如,在通电时您握住一个按钮);根据您希望它执行的操作,您可能希望将读取移动到循环()的开头,以便在按下按钮时写入随机值。\define pinMode1 1
#define pinMode1 1
#define pinMode2 13
bool pushed;
bool val = 0;
void setup() {
// Declare OUTPUT pin.
pinMode(pinMode1, OUTPUT);
// Declare INPUT pin.
pinMode(pinMode2, INPUT);
// Set digitalRead().
pushed = digitalRead(pinMode2);
// Initializes the pseudo-random number generator.
randomSeed(analogRead(0));
}
void loop() {
if (pushed == 1) {
for (int i = 1; i < 9; i++) {
val = random(2);
// Set i to HIGH or LOW.
digitalWrite(i, val);
}
}
}
#定义pinMode2 13
布尔推;
布尔值=0;
无效设置(){
//声明输出引脚。
pinMode(pinMode1,输出);
//声明输入引脚。
pinMode(pinMode2,输入);
//设置digitalRead()。
按下=数字读取(pinMode2);
//初始化伪随机数生成器。
随机种子(模拟读取(0));
}
void循环(){
如果(推送==1){
对于(int i=1;i<9;i++){
val=随机(2);
//将i设置为高或低。
数字写入(i,val);
}
}
}
必须查看推送从何而来,因为for循环是fine@RussS:仅在c99中和之后才可以。@Als感谢您的更正!我完全放弃了您的新编辑。您的{
和}
有问题。请检查每个{
都有相应的}
和每个“}”都有相应的{
。请记住,您不能在文件范围内调用函数。randomSeed
调用属于哪个函数?请记住检查最合适的答案。只需在此处添加,C89中的所有声明都必须位于块的顶部。这在此处起作用,因为它位于块的开头(根据上面的上下文),但如果循环之前有其他语句,则通常情况下这可能不起作用。@FatalError yes,在答案中添加注释是有意义的。完成。
#define pinMode1 1
#define pinMode2 13
bool pushed;
bool val = 0;
void setup() {
// Declare OUTPUT pin.
pinMode(pinMode1, OUTPUT);
// Declare INPUT pin.
pinMode(pinMode2, INPUT);
// Set digitalRead().
pushed = digitalRead(pinMode2);
// Initializes the pseudo-random number generator.
randomSeed(analogRead(0));
}
void loop() {
if (pushed == 1) {
for (int i = 1; i < 9; i++) {
val = random(2);
// Set i to HIGH or LOW.
digitalWrite(i, val);
}
}
}