chylove 发表于 2013-4-10 01:17:36

关于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!!!!

laofuz1024 发表于 2013-4-11 10:41:34

你试一下 ,定义 int i
然后就直接输出到计算机看看是不是0,或者出错!!定义但没赋值的整型,默认是0,一般都是如此

if里面的语句,应该是 ==号不是=号!!

你写代码整洁一点!静态变量就统一定义在一个地方,如此就不会出来重复定义变量的问题

chylove 发表于 2013-4-14 05:35:30

本帖最后由 chylove 于 2013-4-14 06:04 编辑

laofuz1024 发表于 2013-4-11 10:41 static/image/common/back.gif
你试一下 ,定义 int i
然后就直接输出到计算机看看是不是0,或者出错!!定义但没赋值的整型,默认是0, ...

谢谢,我这里写错了,程序里面if是==的。。。咦,怎么现在没问题了,我郁闷了……还有想问一下,重复定义会出现什么样的情况呢??

贱客 发表于 2013-4-15 10:42:49

用了太多的全局变量,并且都是简单的 i,j,k 这种命名,不确定你是否在其他函数里改变了这些值。。

laofuz1024 发表于 2013-4-17 14:56:59

chylove 发表于 2013-4-14 05:35 static/image/common/back.gif
谢谢,我这里写错了,程序里面if是==的。。。咦,怎么现在没问题了,我郁闷了……还有想问一下,重复定 ...

重复定义变量,如果语法允许,就没问题。如果语法不允许就会出错,编译不通过!
页: [1]
查看完整版本: 关于Arduino编程的问题