极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 26866|回复: 8

arduino 同时进行两个程序,求帮助!!!

[复制链接]
发表于 2018-5-21 10:48:01 | 显示全部楼层 |阅读模式
想要做一个火情报警系统,但是发现闪灯的延时会影响串口的数据例如:
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);
}
就是这样的代码,在有火的情况下,串口里的数据会每五秒刷新一次,但是我想让它一直刷新,该怎么做,求各位大佬!!
回复

使用道具 举报

发表于 2018-5-21 10:59:00 | 显示全部楼层
你的灯这么大的延时肯定不行呀
回复 支持 反对

使用道具 举报

发表于 2018-5-21 11:11:18 | 显示全部楼层
你不会将刷串口数据的程序放到延时里面吗?
回复 支持 反对

使用道具 举报

发表于 2018-5-21 11:33:26 | 显示全部楼层
给灯里一个变量,每次到灯里+1,加到特定数字就让灯定量或熄灭,这样不至于在灯里面等5S钟,特定的周期试一下,满足闪亮快慢的要求。
回复 支持 反对

使用道具 举报

发表于 2018-5-21 11:41:09 | 显示全部楼层
本帖最后由 275891381 于 2018-5-21 11:51 编辑

看你是新手给你改改,这样最简单,用个定时器读ad输出串口也可以
  1. int led = 13;
  2. int huoqing = A0;

  3. void setup()
  4. {
  5.         pinMode(led,OUTPUT);
  6.         digitalWrite(led,0);//灭灯
  7.         pinMode(huoqing,INPUT);
  8.         Serial.begin(9600);
  9. }
  10. void loop()
  11. {
  12.         fire();
  13.       //  deng();
  14. }
  15. void fire()
  16. {
  17.         int a = analogRead(A0);
  18.         Serial.println(a);
  19.         if(a > 600)
  20.                 deng();
  21.         else
  22.           digitalWrite(led,0);//灭灯
  23. }
  24. #define deng_time 2500
  25. unsigned long deng_time_old=0;//和delay()返回值类型unsigned long一致
  26. void deng(void)
  27. {
  28.         if(abs(millis()-deng_time_old)>deng_time)//9h22min溢出,加abs处理溢出
  29.         {
  30.             deng_time_old=millis();
  31.             digitalWrite(led,!digitalRead(led));
  32.         }
  33. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-21 15:21:56 | 显示全部楼层
275891381 发表于 2018-5-21 11:41
看你是新手给你改改,这样最简单,用个定时器读ad输出串口也可以

感谢大神 !!!
回复 支持 反对

使用道具 举报

发表于 2018-5-21 15:51:46 | 显示全部楼层
AnzwerJ 发表于 2018-5-21 15:21
感谢大神 !!!

我没试,应该没问题
回复 支持 反对

使用道具 举报

发表于 2018-5-21 17:04:16 | 显示全部楼层
用 中断事件 来闪灯。 原理也是用计时器。 百度“arduino 中断”。
回复 支持 反对

使用道具 举报

发表于 2018-5-22 07:43:32 | 显示全部楼层
尽量避免使用delay,使用其他函数替代。delay影响太多。
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 09:33 , Processed in 0.041315 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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