当步进电机和PIR结合会用到什么场景呢?
自动开门,如果有人走到门边,PIR感应到有人靠近,然后把门打开。等人通过后门会自动关闭。
门打开的时候显示绿灯,关闭的时候显示红灯。

# 部署

  1. OSEPP UNO的2-5号引脚连到步进电机INA-IND
  2. PIR接到OSEPP UNO的A0引脚。
  3. LED1接到OSEPP UNO的13号引脚。
  4. LED7接到OSEPP UNO的7号引脚。

流程图

uml diagram

# 程序搭建

  • oseppBlock程序

  • Arduino程序
#include <Stepper.h>

Stepper stepper1(2048, 2, 4, 3, 5); //定义步进电机的步数和引脚

void setup()
{
    stepper1.setSpeed(10); //定义每分钟转速
    //pir1
    pinMode(A0, INPUT); //定义PIR引脚
    //led1
    pinMode(13, OUTPUT); //定义LED1引脚
    //led2
    pinMode(7, OUTPUT); //定义LED2引脚
}

void loop()
{
    if (digitalRead(A0)) //读取PIR的值
    {
        digitalWrite(13, LOW); //红色熄灭
        digitalWrite(7, HIGH); //绿色点亮
        delay(1000);           //延时1000毫秒
        stepper1.step(1024);   //步进电机正向转动1024步
        delay(2000);           //延时2000毫秒
        stepper1.step(-1024);  //步进电机反向转动1024步
        delay(1000);           //延时1000毫秒
    }
    else
    {
        digitalWrite(13, HIGH); //红色点亮
        digitalWrite(7, LOW);   //绿色熄灭
        delay(1000);            //延时1000毫秒
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 运行结果

当PIR检测到人体红外热源时,触发高电平。绿色LED点亮,步进马达正向转动半圈,等待2秒后反转半圈回来。然后红色LED点亮,绿色LED熄灭。

# 操作视频