极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 30771|回复: 13

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

[复制链接]
发表于 2014-4-16 15:48:59 | 显示全部楼层 |阅读模式
如果我想判断一个条件,这个条件达到了再循环。
可不可以在setup里设置那个条件是否达到呢?
比如
void setup()
{
     while(1);
{
     if(...)break;

}
}
void loop(){}

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

谢谢各位{:soso_e154:}
回复

使用道具 举报

发表于 2014-4-16 16:26:35 | 显示全部楼层
setup顾名思义设置,是一次设置,如果做条件设置可以在setup中.程序循环运行是在loop中,估计你的考虑应该是在程序循环时根据条件做什么还是不做什么.
回复 支持 反对

使用道具 举报

发表于 2014-4-16 16:51:48 | 显示全部楼层
自己写段程序,测试下不就知道了?!
回复 支持 反对

使用道具 举报

发表于 2014-4-16 21:02:30 | 显示全部楼层
打开这个目录
C:\Program Files\Arduino\hardware\arduino\cores\arduino
看下main.cpp你就懂了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-17 14:40:42 | 显示全部楼层
pathletboy 发表于 2014-4-16 21:02
打开这个目录
C:\Program Files\Arduino\hardware\arduino\cores\arduino
看下main.cpp你就懂了。

看了以后更迷惑了
main.cpp什么时候用的?serialEventRun又是何方神圣?
回复 支持 反对

使用道具 举报

发表于 2014-4-17 15:43:28 | 显示全部楼层
ilxingyun 发表于 2014-4-17 14:40
看了以后更迷惑了
main.cpp什么时候用的?serialEventRun又是何方神圣?

这么看来,你得从c语言的main开始学起。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-18 08:16:48 | 显示全部楼层
林定祥 发表于 2014-4-16 16:26
setup顾名思义设置,是一次设置,如果做条件设置可以在setup中.程序循环运行是在loop中,估计你的考虑应该是在 ...

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

使用道具 举报

 楼主| 发表于 2014-4-18 08:36:27 | 显示全部楼层
pathletboy 发表于 2014-4-17 15:43
这么看来,你得从c语言的main开始学起。

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

这么看来我要从电路开始学起
回复 支持 反对

使用道具 举报

发表于 2014-4-18 10:15:50 | 显示全部楼层
ilxingyun 发表于 2014-4-18 08:36
网上查了,明白了~Arduino  封装  了main()函数,在该函数中实现了两个接口函数:setup()和loop()。长知识了 ...

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

使用道具 举报

发表于 2014-4-18 11:15:56 | 显示全部楼层
ilxingyun 发表于 2014-4-18 08:16
对的对的!我想的是有些东西是无限循环的,一个东西是等待一个消息,需要循环等待但是执行一次,比如说等 ...

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

使用道具 举报

发表于 2014-4-18 11:17:59 | 显示全部楼层
ilxingyun 发表于 2014-4-18 08:36
网上查了,明白了~Arduino  封装  了main()函数,在该函数中实现了两个接口函数:setup()和loop()。长知识了 ...

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

使用道具 举报

发表于 2014-4-18 17:17:10 | 显示全部楼层
林定祥 发表于 2014-4-18 11:17
arduino本来就设计成不怎么理工的人使用的,因此不要去穷追里面的内涵,除非你想成为一个真正的程序员.

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

使用道具 举报

发表于 2014-4-18 17:53:26 | 显示全部楼层
哦,说的也对。不过我现在还没达到这个境界,我只是个玩客。
回复 支持 反对

使用道具 举报

发表于 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);
}
//
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 23:14 , Processed in 0.039691 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表