关于教程中第一个流水灯
关于教程中第一个流水灯,目前效果是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);
}
}
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);
}
} 我也是新手 根据例程试出来的 其实也想不太明白 void Twinkle_Two()
{
char i;
if(PINB == 0x02)
{
for(i=0;i<8;i++)
{
PORTD |= (1<<i);
_delay_ms(300);
PORTD |=~(1<<i);
}
}
} 如果重复亮的灯中间没有间隔熄灭的话,就把digitalWrite(i,0);去掉就好了,如果需要间隔熄灭那还需要添加代码 同上,不过你应该加一段判断在全部亮后关闭所有灯然后在重新亮 本帖最后由 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]