你好,参照您的程序想学习一下多线程,但是电机却不转了,请问哪里出错了呢?先谢大神啦
#include <pt.h>
#include <PT_timer.h>
int intput1=5;
int intput2=6;
int pa = analogRead(A0);
int a = analogRead(A1);
int pb = analogRead(A2);
int b = analogRead(A3);
int aa;
static struct pt pt1,pt2;
PT_timer servotimer;
void setup()
{
//线程1初始化
Serial.begin(9600);
pinMode(intput1,OUTPUT);
pinMode(intput2,OUTPUT);
PT_INIT(&pt1);
}
void loop () //这就是进行线程调度的地方
{
protothread1(&pt1); //执行线程1
//delay(1000); //时间片,每片1秒,可根据具体应用设置大小
}
static int protothread1(struct pt *pt) //线程1,控制灯1
{
PT_BEGIN(pt); //线程开始
while(1) //每个线程都不会死
{
aa=a-pa;
if(aa>0)
{
digitalWrite(intput1,HIGH);//将舵机接口电平至高
digitalWrite(intput2,LOW);
}
else
{ if(aa<0)
{
digitalWrite(intput1,LOW);//将舵机接口电平至高
digitalWrite(intput2,HIGH);
}
else
{
digitalWrite(intput1,LOW);//将舵机接口电平至高
delayMicroseconds(100);//延时脉宽值的微秒数
digitalWrite(intput2,LOW);
delayMicroseconds(100);
}
}
PT_END(pt);
//线程结束
}
}
|