Stray_Cat 发表于 2014-7-19 19:51:30

请大神们指出这个程序不对的地方,谢谢

byte ledpin[]={4,5,6,7,8,9,10};
int ledDelay(65);
int direction=1;
int currentLED=0;
unsigned long changetime;
void setup(){
   for (int x=0;x<7;x++){
    pinMode(ledpin,OUTPUT); }
    changetime=millis();
}

void loop(){
if((millis()-changetime)>ledDelay){
changeLED();
changetime=millis();
}
}

void changeLED(){
for(int x=0;x<7;x++){
digitalWrite(ledpin,LOW);
}
digitalWrite(ledpin,HIGH);
currentLED+=direction;
if(currentLED==6){direction==-1;}
if(currentLED==0){direction==1;}
}

看不到跑马灯的现象,是我的硬件问题,还是程序问题?

i7456 发表于 2014-7-19 20:20:38

int ledDelay(65);   这个是什么意思?
if((millis()-changetime)>ledDelay) 这个又是什么意思?

kenan13 发表于 2014-7-19 21:36:40

程序应该能实现跑马灯的效果吧?不过我也看不到int ledDelay(65) 是什么意思呢。。。。。
或者这样写,如何?
for(x=0;x<7;x++){
if(x==0){digitalWrite(ledpin,HIGH);continue;}
digitalWrite(ledpin,LOW);
digitalWrite(ledpin,HIGH);
delay(500);
}
for(x=6;x>=0;x--){
if(x==0){digitalWrite(ledpin,LOW);continue;}
digitalWrite(ledpin,LOW);
digitalWrite(ledpin,HIGH);
delay(500);
}

这样如何?

Stray_Cat 发表于 2014-7-20 15:45:27

i7456 发表于 2014-7-19 20:20 static/image/common/back.gif
int ledDelay(65);   这个是什么意思?
if((millis()-changetime)>ledDelay) 这个又是什么意思?

我只是想定义跑马灯每盏灯的变化之间的延时,如果不行的话麻烦你帮我改一下,先谢谢了

Stray_Cat 发表于 2014-7-20 15:51:52

kenan13 发表于 2014-7-19 21:36 static/image/common/back.gif
程序应该能实现跑马灯的效果吧?不过我也看不到int ledDelay(65) 是什么意思呢。。。。。
或者这样写,如何 ...

真的可以啊,谢谢了。不过for(x=0;x<7;x++){
x的前面要加int

Stray_Cat 发表于 2014-7-20 15:58:02

i7456 发表于 2014-7-19 20:20 static/image/common/back.gif
int ledDelay(65);   这个是什么意思?
if((millis()-changetime)>ledDelay) 这个又是什么意思?

我刚刚说错了,ledDelay()应该是每次轮回变化之间的延时,我试了一下,应该是可以用的

i7456 发表于 2014-7-20 16:07:20

Stray_Cat 发表于 2014-7-20 15:58 static/image/common/back.gif
我刚刚说错了,ledDelay()应该是每次轮回变化之间的延时,我试了一下,应该是可以用的

int ledDelay(65);
没见过这种用法,你是在哪里学到的?

转角 发表于 2014-7-20 16:32:20

digitalWrite 第一个参数是引脚吧。

byte ledpin[]={4,5,6,7,8,9,10}; 引脚用byte定义对吗? byte只有一个字节,int是2个字节,这里应该改成int

Stray_Cat 发表于 2014-7-20 18:11:01

i7456 发表于 2014-7-20 16:07 static/image/common/back.gif
int ledDelay(65);
没见过这种用法,你是在哪里学到的?

《arduino从基础到实践》

Stray_Cat 发表于 2014-7-20 18:44:35

转角 发表于 2014-7-20 16:32 static/image/common/back.gif
digitalWrite 第一个参数是引脚吧。

byte ledpin[]={4,5,6,7,8,9,10}; 引脚用byte定义对吗? byte只有一 ...

可是改成int好像也没有跑马灯的现象啊。。先谢谢了

i7456 发表于 2014-7-20 21:13:58

Stray_Cat 发表于 2014-7-20 18:11 static/image/common/back.gif
《arduino从基础到实践》

可以截图看一下吗?

kenan13 发表于 2014-7-20 23:16:09

Stray_Cat 发表于 2014-7-20 15:51 static/image/common/back.gif
真的可以啊,谢谢了。不过for(x=0;x

可以就行啦,我随手写的,忘了加上去了。。。。。。。。囧

daiqx 发表于 2014-7-21 09:39:57

int ledDelay(65);   =>int ledDelay=650;   

Stray_Cat 发表于 2014-7-21 12:13:52

i7456 发表于 2014-7-20 21:13 static/image/common/back.gif
可以截图看一下吗?

...图是截了,但是不知道怎样发上来。你信我吧,书上真的就这么写的。

Stray_Cat 发表于 2014-7-21 19:59:25

我把int ledDelay()的值改大了一点,但是只能在刚输入时看到一次跑马灯现象,然后led灯又亮得杂乱无章了
页: [1] 2
查看完整版本: 请大神们指出这个程序不对的地方,谢谢