Arduino在完成循环之前停留了一段时间

时间:2016-02-27 11:51:07

标签: arduino

编辑:我得到了完成循环的程序,现在只是它在完成循环之前给了我一堆0 - 所以这里是我的更新版本代码。

尝试创建一个一个接一个地关闭LED的程序,一旦它们全部点亮 - 一个接一个地关闭它们,并继续打开和关闭它们。我已成功点亮它们并关闭它们,但程序似乎在它完成循环并重新开始之前将它们全部关闭时会卡住一段时间。

int t=1000;
unsigned long time;
int pin;
int value;
int a;
int b;

void setup() {
  // put your setup code here, to run once:
  for(pin=2; pin<8; pin++){
    pinMode(pin, OUTPUT);
  }

  Serial.begin(9600);

}

void more(){
  for(int i=1; i<8; i++){
    for(pin=i; pin<8; pin++){
      digitalWrite(pin,HIGH);
      a=bitRead(PORTD,7);
      b=bitRead(PORTD,2);

      for(pin=2; pin<8; pin++){
        value=bitRead(PORTD,pin);
        if(value==1){
          Serial.print("1   ");
        }
        else{
          Serial.print("0   ");
        }
      }
      Serial.println();
      Serial.println();
      delay(t);
    }
  }
}
void less(){
  for(int j=7; j>=2; j--){
    for(int p=j; p>1; p--){
      digitalWrite(p,LOW);
      a=bitRead(PORTD,7);
      b=bitRead(PORTD,2);

      for(pin=2; pin<8; pin++){
        value=bitRead(PORTD,pin);
        if(value==1){
          Serial.print("1   ");
        }
        else{
          Serial.print("0   ");
        }
      }
      Serial.println();
      Serial.println();
      delay(t);
    }
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.print("Time: ");
  time=millis();
  Serial.println(time);

  a=bitRead(PORTD,7);
  b=bitRead(PORTD,2);

  do{
    more();
  }while(a==0);

  do{
    less();
  }while(b==1);
}

1 个答案:

答案 0 :(得分:1)

a=0始终为false,b=1始终为true,因为它们会进行分配并评估为已分配的内容。

使用==运算符来比较数字。