关于Arduino编程的问题
本帖最后由 chylove 于 2013-4-10 20:08 编辑求各位大神帮我看为什么会出现这样的情况??
#include <Servo.h>
Servo servo1;//舵机1
Servo servo2;//舵机2
int x,i=1,j,k; //问题标记①
void setup()
{
servo1.attach(3);
servo1.write(125);
servo2.attach(5);
servo2.write(125);
}
int Lfoot()
{
for(x=125;x>70;x-=i)
{
servo1.write(x);
delay(10);
}
}
int Rfoot()
{
for(x=125;x>70;x-=i)
{
servo2.write(x);
delay(10);
}
}
void loop()
{
static int j=0;
if(j==0)
{
Wpos(); // Wpos()是我编的一个函数,已定义,这里为了省时间不写出来。
Lfoot(); //问题标记②
j=j+1;
}
for(k=1;k<2;k++) //(问题标记③)注释:如果k=1,调用函数Lfoot(),如果k=2,调用函数Rfoot().
{
if(k=1)
{
Lfoot();
}
if(k=2)
{
Rfoot();
}
}
}
问题如下: 1、 请问int i 后,假如i没有定义i的数值,那i是什么数值呢?应该是0吧。
2、如果将问题标记③的循环中的k改为i就可正常运行。为什么这样呢??……
3、在问题2将k改为i的情况下(这时程序正常运行),如果将问题标记①中的int i=1,改为int i,并在void loop()
中static in j =0语句前面加上int i=1,然后,这里面的问题标记②中的Lfoot()就不运行了,后面的for()循环也
没反应。那是为什么呢?望指教。。。
就是说,问题标记①要写成int i = 1; 问题标记③的for()循环里面的全部改为i,即可正常运行,缺一不可,我不知道这是为什么,望各位大虾指教。。。Thank you!!!! 你试一下 ,定义 int i
然后就直接输出到计算机看看是不是0,或者出错!!定义但没赋值的整型,默认是0,一般都是如此
if里面的语句,应该是 ==号不是=号!!
你写代码整洁一点!静态变量就统一定义在一个地方,如此就不会出来重复定义变量的问题 本帖最后由 chylove 于 2013-4-14 06:04 编辑
laofuz1024 发表于 2013-4-11 10:41 static/image/common/back.gif
你试一下 ,定义 int i
然后就直接输出到计算机看看是不是0,或者出错!!定义但没赋值的整型,默认是0, ...
谢谢,我这里写错了,程序里面if是==的。。。咦,怎么现在没问题了,我郁闷了……还有想问一下,重复定义会出现什么样的情况呢?? 用了太多的全局变量,并且都是简单的 i,j,k 这种命名,不确定你是否在其他函数里改变了这些值。。 chylove 发表于 2013-4-14 05:35 static/image/common/back.gif
谢谢,我这里写错了,程序里面if是==的。。。咦,怎么现在没问题了,我郁闷了……还有想问一下,重复定 ...
重复定义变量,如果语法允许,就没问题。如果语法不允许就会出错,编译不通过!
页:
[1]