我正在做一个关于控制两个传感器(超声波和红外线)的项目,用Arduino管理它们.该IR接收器有一个过滤器系统内,所以它在接收到36千赫的频率.我使用模块srf04来处理超声波的东西.如果我做一个必须只控制一个传感器的程序,它就可以工作.但我必须将两个信号插入到一个结果中.所以我使用了protothreads!但它不起作用......错误是什么?
这是代码:
#include <pt.h>
int iro = 8, iri = 4, us = 12, distanza, us_vcc = 13, ir_vcc = 7;
long durata;
static struct pt pt1, pt2, pt3;
static int irthread(struct pt *pt) {
PT_BEGIN(pt);
while(1) {
PT_WAIT_UNTIL(pt, 1>0);
digitalWrite(iro, HIGH);
delayMicroseconds(9);
digitalWrite(iro, LOW);
delayMicroseconds(9);
}
PT_END(pt);
}
static int usthread(struct pt *pt) {
static unsigned long timer = 0;
PT_BEGIN(pt);
while(1) {
PT_WAIT_UNTIL(pt, millis() - timer > 200);
timer = millis();
pinMode(us, OUTPUT);
digitalWrite(us, LOW);
delayMicroseconds(5); …Run Code Online (Sandbox Code Playgroud)