哪位好心的大神帮帮忙,,急死了!!
#define PUL 6#define DIR 5
#define ENA 4
#define PINA 9
/*
功能:初始化
*/
void setup()
{
pinMode(PUL,OUTPUT);
pinMode(DIR,OUTPUT);
pinMode(ENA,OUTPUT);
pinMode(PINA,INPUT);
Serial.begin(9600);
digitalWrite(ENA,HIGH);//使能驱动器
}
/*
功能:产生PWM
*/
void pwm()
{
for (int i=0; i <100000; i++)
{
digitalWrite(PUL,LOW);
delayMicroseconds(5); //想要电机转的快点,缩小数值;反之,增加数值
digitalWrite(PUL,HIGH);
delayMicroseconds(5);
}
}
void loop()
{
//目标检测
if(digitalRead(PINA)==LOW)
{
digitalWrite(DIR,LOW);
delay(10);
pwm();
}
else
{
digitalWrite(DIR,HIGH);//改变转向
delay(10);
pwm();
}
}
当人到感应区后,电机顺时针180旋转,人离开感应区后,电机逆时针回到起点,我用的是步进电机 42HS4013A4---G10是减速步进电机 1.8 1.3A,传感器是HC-SR501 人体红外感应模块 红外传感器 热释电 进口探头 可是为什么电机朝着一个方向转啊,望大神帮我看一下程序哪里出错了?我真的好急的!!谢谢。
请修改成上升沿触发正转,下降沿触发反转。
红外热释电传感器有两种触发模式的,这里有一些资料
a、不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;
b、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。
3、具有感应封锁时间(默认设置:2.5S 封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒—几十秒钟)。
页:
[1]