arduino 同时进行两个程序,求帮助!!!
想要做一个火情报警系统,但是发现闪灯的延时会影响串口的数据例如:int led = 13;
int huoqing = A0;
void setup()
{
pinMode(led,OUTPUT);
pinMode(huoqing,INPUT);
Serial.begin(9600);
}
void loop()
{
fire();
deng();
}
void fire()
{
int a = analogRead(A0);
Serial.println(a);
if(a > 600)
{
deng();
}
void deng()
{
digitalWrite(led,HIGH);
delay(2500);
digitalWrite(led,LOW);
delay(2500);
}
就是这样的代码,在有火的情况下,串口里的数据会每五秒刷新一次,但是我想让它一直刷新,该怎么做,求各位大佬!! 你的灯这么大的延时肯定不行呀 你不会将刷串口数据的程序放到延时里面吗? 给灯里一个变量,每次到灯里+1,加到特定数字就让灯定量或熄灭,这样不至于在灯里面等5S钟,特定的周期试一下,满足闪亮快慢的要求。 本帖最后由 275891381 于 2018-5-21 11:51 编辑
看你是新手给你改改,这样最简单,用个定时器读ad输出串口也可以
int led = 13;
int huoqing = A0;
void setup()
{
pinMode(led,OUTPUT);
digitalWrite(led,0);//灭灯
pinMode(huoqing,INPUT);
Serial.begin(9600);
}
void loop()
{
fire();
//deng();
}
void fire()
{
int a = analogRead(A0);
Serial.println(a);
if(a > 600)
deng();
else
digitalWrite(led,0);//灭灯
}
#define deng_time 2500
unsigned long deng_time_old=0;//和delay()返回值类型unsigned long一致
void deng(void)
{
if(abs(millis()-deng_time_old)>deng_time)//9h22min溢出,加abs处理溢出
{
deng_time_old=millis();
digitalWrite(led,!digitalRead(led));
}
} 275891381 发表于 2018-5-21 11:41
看你是新手给你改改,这样最简单,用个定时器读ad输出串口也可以
感谢大神 !!! AnzwerJ 发表于 2018-5-21 15:21
感谢大神 !!!
我没试,应该没问题 用 中断事件 来闪灯。 原理也是用计时器。 百度“arduino 中断”。 尽量避免使用delay,使用其他函数替代。delay影响太多。
页:
[1]