【开源】超声波传感器控制开关的自动开启与关闭

本系列,是记录自己入门嵌入式领域的学习笔记。

看看能坚持多久。

今天是2023年5月2日

项目需求:超声波传感器控制灯的开关

项目概述

本项目使用 NodeMCU v3 开发板、HC-SR04 超声波传感器和 SG90 舵机来控制灯的开关。当超声波传感器检测到距离小于等于 100cm 的物体时,舵机正方向旋转 50 度并按下开关,当检测距离大于 100cm 时,舵机反方向旋转 50 度并按下开关。但因没有别的物品,未进一步搭建。但本方案是可行的。此外,还可以对添加一个oled屏幕来显示检测距离,或者运用程序在APP端口进行操作。

 

所需材料

  • NodeMCU v3 开发板 x1
  • HC-SR04 超声波传感器 x1
  • SG90 舵机 x1
  • 杜邦线若干
  • 面包板 x1

接线方式

请按照以下接线方式将硬件连接好:

  • 将 NodeMCU v3 开发板与面包板连接
  • HC-SR04连接方式:

    VCC -> NodeMCU 3.3V
    Trig -> NodeMCU D1
    Echo -> NodeMCU D2
    GND -> NodeMCU GND

  • SG90连接方式:

    VCC -> NodeMCU 5V
    GND -> NodeMCU GND
    Signal -> NodeMCU D5

代码设计

请使用以下代码实现本项目需求:

#include <Servo.h>  // 引入 Servo 库

#define TRIG_PIN D1   // 定义超声波发射引脚
#define ECHO_PIN D2   // 定义超声波接收引脚
#define SERVO_PIN D5  // 定义舵机控制引脚

Servo servo;  // 创建一个名为 servo 的 Servo 对象
int distance = 0;  // 初始化距离变量

void setup() {
  Serial.begin(9600);  // 初始化串口通信,波特率为 9600
  pinMode(TRIG_PIN, OUTPUT);  // 将超声波发射引脚设为输出模式
  pinMode(ECHO_PIN, INPUT);  // 将超声波接收引脚设为输入模式
  servo.attach(SERVO_PIN);  // 将舵机控制引脚与 Servo 对象绑定
}

void loop() {
  digitalWrite(TRIG_PIN, LOW);  // 将超声波发射引脚置为低电平
  delayMicroseconds(2);  // 延时 2 微秒
  digitalWrite(TRIG_PIN, HIGH);  // 将超声波发射引脚置为高电平
  delayMicroseconds(10);  // 延时 10 微秒
  digitalWrite(TRIG_PIN, LOW);  // 将超声波发射引脚置为低电平
  distance = pulseIn(ECHO_PIN, HIGH) / 58.2;  // 计算距离(单位:厘米)
  Serial.print("Distance: ");  // 输出提示信息
  Serial.print(distance);  // 输出距离值
  Serial.println(" cm");  // 输出距离单位

  if (distance <= 100) {  // 如果距离小于等于 100 厘米
    servo.write(50);  // 舵机旋转至角度 50 度
  } else {  // 否则
    servo.write(130);  // 舵机旋转至角度 130 度
  }

  delay(500);  // 延时 500 毫秒
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值