ilxingyun 发表于 2014-4-16 15:48:59

请教各位大神,关于setup()与loop()函数的问题。

如果我想判断一个条件,这个条件达到了再循环。
可不可以在setup里设置那个条件是否达到呢?
比如
void setup()
{
   while(1);
{
   if(...)break;

}
}
void loop(){}

这样合法吗?如果不行该怎么办呢?

谢谢各位{:soso_e154:}

林定祥 发表于 2014-4-16 16:26:35

setup顾名思义设置,是一次设置,如果做条件设置可以在setup中.程序循环运行是在loop中,估计你的考虑应该是在程序循环时根据条件做什么还是不做什么.

i7456 发表于 2014-4-16 16:51:48

自己写段程序,测试下不就知道了?!

pathletboy 发表于 2014-4-16 21:02:30

打开这个目录
C:\Program Files\Arduino\hardware\arduino\cores\arduino
看下main.cpp你就懂了。

ilxingyun 发表于 2014-4-17 14:40:42

pathletboy 发表于 2014-4-16 21:02 static/image/common/back.gif
打开这个目录
C:\Program Files\Arduino\hardware\arduino\cores\arduino
看下main.cpp你就懂了。

看了以后更迷惑了:'(
main.cpp什么时候用的?serialEventRun又是何方神圣?

pathletboy 发表于 2014-4-17 15:43:28

ilxingyun 发表于 2014-4-17 14:40 static/image/common/back.gif
看了以后更迷惑了
main.cpp什么时候用的?serialEventRun又是何方神圣?

这么看来,你得从c语言的main开始学起。

ilxingyun 发表于 2014-4-18 08:16:48

林定祥 发表于 2014-4-16 16:26 static/image/common/back.gif
setup顾名思义设置,是一次设置,如果做条件设置可以在setup中.程序循环运行是在loop中,估计你的考虑应该是在 ...

对的对的!我想的是有些东西是无限循环的,一个东西是等待一个消息,需要循环等待但是执行一次,比如说等串口有消息传来,用if判断,消息来了才执行下面的语句,可是如果在loop里又要去判断有没有消息了,可是这时候不需要判断来不来消息了,该怎么办呢?

ilxingyun 发表于 2014-4-18 08:36:27

pathletboy 发表于 2014-4-17 15:43 static/image/common/back.gif
这么看来,你得从c语言的main开始学起。

网上查了,明白了~Arduino封装了main()函数,在该函数中实现了两个接口函数:setup()和loop()。长知识了~

这么看来我要从电路开始学起

pathletboy 发表于 2014-4-18 10:15:50

ilxingyun 发表于 2014-4-18 08:36 static/image/common/back.gif
网上查了,明白了~Arduino封装了main()函数,在该函数中实现了两个接口函数:setup()和loop()。长知识了 ...

然后你把你的setup/loop代入main中,你看看代码,你顶楼的问题就引刃而解了。

林定祥 发表于 2014-4-18 11:15:56

ilxingyun 发表于 2014-4-18 08:16 static/image/common/back.gif
对的对的!我想的是有些东西是无限循环的,一个东西是等待一个消息,需要循环等待但是执行一次,比如说等 ...

两种方法,第一种在loop中循环一次问一次,有消息就处理,没消息就跳过.第二种,中断方式,不管在做什么,只要有消息就打断,处理好消息在,继续做打断前的事.

林定祥 发表于 2014-4-18 11:17:59

ilxingyun 发表于 2014-4-18 08:36 static/image/common/back.gif
网上查了,明白了~Arduino封装了main()函数,在该函数中实现了两个接口函数:setup()和loop()。长知识了 ...

arduino本来就设计成不怎么理工的人使用的,因此不要去穷追里面的内涵,除非你想成为一个真正的程序员.

pathletboy 发表于 2014-4-18 17:17:10

林定祥 发表于 2014-4-18 11:17 static/image/common/back.gif
arduino本来就设计成不怎么理工的人使用的,因此不要去穷追里面的内涵,除非你想成为一个真正的程序员.

不管是不是想要成为真正的程序猿,最终都最好深入了解下,这个东西很难吗?需要专业知识吗?arduino我觉得提供一个非程序猿入门的捷径,开始时候你可以不管这些,但是当你想更进一步控制好硬件的时候就应该好好了解下arduino这个“库”,这样你才能更好的掌控你的设备。

林定祥 发表于 2014-4-18 17:53:26

哦,说的也对。不过我现在还没达到这个境界,我只是个玩客。

eddiewwm 发表于 2014-4-19 12:10:25

所提的思路是可以的,祇是程序的寫法有點問題,以下可作參考!
//
#define LED 13
#define SW 12

void setup(){
pinMode (SW, INPUT);
pinMode (LED, OUTPUT);
digitalWrite (LED, LOW);
digitalWrite (SW, HIGH);
unsigned int a=1;
while(a){
    a = digitalRead(SW);
}
}
void loop(){
digitalWrite (LED, HIGH);
delay (500);
digitalWrite (LED, LOW);
delay (500);
}
//
页: [1]
查看完整版本: 请教各位大神,关于setup()与loop()函数的问题。