而arduino中的循环拒绝工作(简单的编程)

时间:2015-01-07 15:09:55

标签: arduino arduino-uno

我正在编写一个基本程序,需要20毫秒,并控制主板上的小灯的开启和关闭。 但它总是向我显示一个错误 有人可以帮我解决一下吗?

void setup() {

  pinMode(13, OUTPUT);
}


int cycle = 1; 
int time_t=20;
int time_on = 0;
int time_off= (time_t-time_on);
int big=0.05;
while (cycle<=100) {
  if (cycle%10==0) {
    time_on=time_t*big;
    time_off= time_t-time_on;
    big=big+0.05;
  }

  digitalWrite(13, HIGH);   
  delay(time_on);              
  digitalWrite(13, LOW);   
  delay(time_off));    
 cycle++;  

}

2 个答案:

答案 0 :(得分:3)

arduino程序语法指定程序由两个函数setup()loop()组成。因此,必须一次又一次地重复的部分必须写在循环函数内。所以你的代码将进入一个名为loop的void函数。它变成了:

void loop(){
  while (cycle<=100) {
    if (cycle%10==0) {
      time_on=time_t*big;
      time_off= time_t-time_on;
      big=big+0.05;
    }

  digitalWrite(13, HIGH);   
  delay(time_on);              
  digitalWrite(13, LOW);   
  delay(time_off));    
  cycle++;  
}

Arduino参考: http://arduino.cc/en/Reference/Loop

答案 1 :(得分:0)

我还没有使用过这种语言,但我发现&#34; int big = 0.05;&#34;您正尝试将浮点值分配给整数。它应该是double,float还是类似的数据类型?然后在while循环中你有

time_on=time_t * big;

再次尝试将整数与浮点值相乘并将其分配回整数。结果是time_on的值将是time_t倍大的圆形版本。 time_on的值只会随着大方法的值或等于1而改变。而大的值总是等于0.你需要将big和time_on变量更改为浮点数据类型。