关于教程中第一个流水灯-Arduino中文社区 - Powered by Discuz! Archiver

cxhzilong 发表于 2017-8-17 22:26

关于教程中第一个流水灯

关于教程中第一个流水灯,目前效果是1,
2,
3,
4,
5,
6,
7
按照顺序一个一个亮。


如果我想按照
1,
12,
123,
1234,
12345,
123456,
1234567

这种顺序亮,程序该怎么写呢?

---
目前程序如下:
void setup()
{
for (int i=2;i<8;i++)
pinMode(i,1);
}
void loop()
{
for(int i=2;i<8;i++)
{
digitalWrite(i,1);
delay(200);
digitalWrite(i,0);
}
}

loveyouae86 发表于 2017-8-19 15:36

void setup()
{
for (int i=2;i<8;i++)
pinMode(i,1);
}
void loop()
{
for(int i=2;i<8;i++)
{
digitalWrite(i,1);
delay(200);

}
for(int i=7;i>2;i--)
   {
digitalWrite(i,0);
delay(200);

}
}

loveyouae86 发表于 2017-8-19 15:38

我也是新手 根据例程试出来的 其实也想不太明白

妹子你啪啪过吗 发表于 2017-9-18 11:38

void Twinkle_Two()
{   
      char i;
   if(PINB == 0x02)
   {
      for(i=0;i<8;i++)
          {
         PORTD |= (1<<i);
         _delay_ms(300);
         PORTD |=~(1<<i);
         }
      }
}

菜菜wtfiind 发表于 2017-9-18 22:08

如果重复亮的灯中间没有间隔熄灭的话,就把digitalWrite(i,0);去掉就好了,如果需要间隔熄灭那还需要添加代码

疯狂的菜鸟 发表于 2018-3-17 18:09

同上,不过你应该加一段判断在全部亮后关闭所有灯然后在重新亮

PingWang13 发表于 2018-5-17 23:16

本帖最后由 PingWang13 于 2018-5-17 23:19 编辑

应该这样写,使用双重循环,外层循环控制LED灯下次打开的灯数量比上次多一个,内层循环控制每个循环内灯的开关,就可以了!!


int i;
int j = 0;
void setup() {
for (i = 8; i <= 14; i++)
    pinMode(i, OUTPUT);
}
void loop() {
for (i = 8; i <= 14; i++)
{
    for (j = 8; j <= i; j++)    {
      digitalWrite(j, HIGH);
    }
    delay(30);
    for (j = 8; j <= i; j++)    {
      digitalWrite(j, LOW);
    }
    delay(30);
}
}



页: [1]
查看完整版本: 关于教程中第一个流水灯