求助 用多个人体红外控制多个led 遇到问题
用多个人体红外控制LED一个人体红外模块对应一个led
人体红外点亮LEDled亮10S
但是用delay() 就造成其他人体红外接收到信号 led也没有反应
有什么函数可以解决啊
就是灯亮的时候不影响其他工作
用的2560
看扩展库有个 Timer是什么利用millis()函数来模拟多线程
不要用delay好了,自己定义个变量,自己计数。 自己人工置顶 瘦网虫 发表于 2014-5-13 15:41 static/image/common/back.gif
不要用delay好了,自己定义个变量,自己计数。
计数器和定时器 差不多
我用定时函数一样
计时未完成就不会 响应其他信号 用millis(),不到点循环,到点处理。 林定祥 发表于 2014-5-13 18:10 static/image/common/back.gif
用millis(),不到点循环,到点处理。
类似查询中断吗 林定祥 发表于 2014-5-13 18:10 static/image/common/back.gif
用millis(),不到点循环,到点处理。
这个不影响其他传感器 响应吗
比如 人体红外1响应LED1亮(需要亮5分钟)
亮了一分钟 人体红外2响应LED2亮(需要亮五分钟)
按我的理解你说的函数millis()用于关灯
但读取系统时间也不能执行其他 响应吧
自己人工置顶
自己人工置顶
自己人工置顶 把程序放上來,看看怎替你改吧! dbwing520 发表于 2014-5-13 18:54 static/image/common/back.gif
这个不影响其他传感器 响应吗
比如 人体红外1响应LED1亮(需要亮5分钟)
他的原理是,在loop中在执行到millis时和需要延时的值比对,不对,继续执行下个指令,操作
值处理时间,因此使用millis不存在时间等待问题 dbwing520 发表于 2014-5-13 18:54 static/image/common/back.gif
这个不影响其他传感器 响应吗
比如 人体红外1响应LED1亮(需要亮5分钟)
他的原理是,在loop中在执行到millis时和需要延时的值比对,不对,继续执行下个指令,操作
值处理时间,因此使用millis不存在时间等待问题 eddiewwm 发表于 2014-5-13 21:39 static/image/common/back.gif
把程序放上來,看看怎替你改吧!
int echo2=40;
int trig2=43;
int led2=7;
int echo1=32;
int trig1=35;
int led1=9;
void setup()
{
Serial.begin(9600);
pinMode(echo2, INPUT);
pinMode(trig2, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(echo1, INPUT);
pinMode(trig1, OUTPUT);
pinMode(led1, OUTPUT);
}
void loop()
{
sr1();
sr2();
}
void sr1()
{
digitalWrite(trig1, LOW);
delayMicroseconds(2);
digitalWrite(trig1, HIGH);
delayMicroseconds(10);
digitalWrite(trig1, LOW);
int d1 = pulseIn(echo1, HIGH);
d1= d1/58;
delay(10);
if(d1 <30 )
{
Serial.println(d1);
Serial.println("sr1");
digitalWrite(led1, HIGH);
delay(5000);
}
else digitalWrite(led1, LOW);
}
void sr2()
{
digitalWrite(trig2, LOW);
delayMicroseconds(2);
digitalWrite(trig2, HIGH);
delayMicroseconds(10);
digitalWrite(trig2, LOW);
int d2 = pulseIn(echo2, HIGH);
d2= d2/58;
delay(10);
if(d2 <30 )
{
Serial.println(d2);
Serial.println("sr2");
digitalWrite(led2, HIGH);
delay(5000);
}
else digitalWrite(led2, LOW);
}
改掉delay 林定祥 发表于 2014-5-13 21:44 static/image/common/back.gif
他的原理是,在loop中在执行到millis时和需要延时的值比对,不对,继续执行下个指令,操作
值处理时间, ...
我看扩展库里有个 Timer就是没找到下载
页:
[1]
2