极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11318|回复: 2

哪位好心的大神帮帮忙,,急死了!!

[复制链接]
发表于 2016-4-8 20:34:29 | 显示全部楼层 |阅读模式
#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 人体红外感应模块 红外传感器 热释电 进口探头              可是为什么电机朝着一个方向转啊,望大神帮我看一下程序哪里出错了?  我真的好急的!!谢谢。


回复

使用道具 举报

发表于 2016-4-9 06:39:05 | 显示全部楼层
请修改成上升沿触发正转,下降沿触发反转。
回复 支持 反对

使用道具 举报

发表于 2016-4-9 10:43:09 | 显示全部楼层
红外热释电传感器有两种触发模式的,这里有一些资料
a、不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;
b、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。
3、具有感应封锁时间(默认设置:2.5S 封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒—几十秒钟)。
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-5-20 15:57 , Processed in 0.039993 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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