【Arduino20】人体感应灯实验

硬件准备

LED灯:1个

超声波模块:1个

人体热释电模块:1个

220欧电阻:1个

面包板:1块

公对母杜邦线:7根

公对公杜邦线:4根

硬件连线

1、将LED灯插入面包板

2、用公对公杜邦线将LED灯的负极接到带减号的横排插口上

3、用220欧电阻和公对公杜邦线将LED灯的正极接到13号引脚

4、用公对公杜邦线将5V接口接到带加号的横排插口上

5、用公对公杜邦线将GND接口接到带减号的横排插口上

6、用4根公对母杜邦线分别将超声波模块的 VCC、Trig、Echo 和 GND 接到带加号的横排插口、 9 号引脚、 8 号引脚和带减号的横排插口上

7、用3根公对母杜邦线分别将人体热释电模块的 IN 、 VCC 、 GND 接到 12 号引脚、加号的横排插口和带减号的横排插口上

软件程序

#define led_pin 13   //LED引脚
#define body_pin 12  //人体热释电引脚
#define Trig_pin 9   //超声波触发引脚
#define Echo_pin 8   //超声波回响引脚

int body_val = -1;  //热释电变量
int Echo_val = -1;  //超声波变量
float distance_cm = -1;//距离变量

/*声明函数*/
void Trigger();
void printVal();
void isLED();

/*初始化*/
void setup() {
  Serial.begin(9600);
  pinMode(led_pin, OUTPUT);
  pinMode(body_pin, INPUT);
  pinMode(Trig_pin, OUTPUT);
  pinMode(Echo_pin, INPUT);
}

/*循环*/
void loop() {
  Trigger();//触发超声波模块

  body_val = digitalRead(body_pin);    //存储热释电变量
  Echo_val = pulseIn(Echo_pin, HIGH);  //存储超声波变量
  distance_cm = Echo_val / 58.00;  //转换为距离

  printVal();//打印变量
  isLED();//判断LED是否该点亮
}

/*触发超声波模块*/
void Trigger(){
  digitalWrite(Trig_pin, HIGH);  //触发超声波模块
  delayMicroseconds(15);
  digitalWrite(Trig_pin, LOW);
}

/*打印变量*/
void printVal(){
  Serial.print("人体热释电 ");
  Serial.println(body_val);
  Serial.print("距离 ");
  Serial.println(distance_cm);
  delay(1000);
}

/*判断LED是否该点亮*/
void isLED() {
  if (distance_cm < 50.00) {
    if (body_val == HIGH) {
      digitalWrite(led_pin, HIGH);
      Serial.println("有人靠近,亮灯");
      delay(1000);
    } else {
      digitalWrite(led_pin, LOW);
    }
  } else {
    digitalWrite(led_pin, LOW);
  }
}

产品展示视频

当人在 50 cm内时,LED灯亮。

【Arduino20】人体距离感应实验

总结

通过本次联合实验,我了解了超声波模块和人体热释电模块的联合用法,熟悉了二者的使用。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值