Arduino基础入门学习——BH1750(GY-302)+ LED模拟自动路灯的实现

news2024/11/17 1:41:05

BH1750(GY-302)+ LED

    • 一、前言
    • 三、准备工作
    • 四、程序代码
    • 五、运行结果
    • 六、结束语

一、前言

相信很多人都见过一种路灯,白天的时候它是不亮的,等到了晚上环境变暗时就开始它的照明工作了,不了解的人可能认为是人为操纵它工作的,其实不然,都说科技改变生活,现在路灯的照明工作已经能够实现全自动了,只要设定好程序它就能自行工作,而本篇文章就简单的介绍如何模拟实现自动路灯的工作。

三、准备工作

硬件:

  • Arduino Uno开发板
  • BH1750(GY-302)光照强度传感器一个
  • LED(3~5V发光二极管)一个
  • 杜邦线若干和面包板一个

软件:

  • Arduino IDE(没安装可看我的另一篇博客点击跳转)
  • BH1750支持库(BH1750,IDE内部自行下载安装即可)
    风行男孩制作

电路图:
风行男孩制作

四、程序代码

#include <BH1750.h>
#define pin_led 7

BH1750 light_sensor;
float light = 0.0;  //用于接收所获取的光照值
bool led_state = false;  //led的状态

void setup() {
  Serial.begin(9600);  //设置串口波特率
  pinMode(pin_led, OUTPUT);  //设置引脚为输出模式(点亮LED)
  light_sensor.begin();  //启动光照强度传感器(BH1750)工作
}

void loop() {
  light = light_sensor.readLightLevel();  //获取光照强度值(0 ~ 65535)
  led_state = light < 50 ? true : false;  // 光强小于50把LED状态设为开
  digitalWrite(pin_led, led_state ? HIGH : LOW);
  //输出光照和led状态
  Serial.print("光照:");
  Serial.print(light);  //串口输出光照值
  Serial.print("Lx  ");
  Serial.print("LED:");
  Serial.print(led_state ? "开\n" : "关\n");  //串口输出光照值
  delay(500); //0.5s更新一次
}

五、运行结果

按照电路图接好线,把上面代码烧录进Arduino后,打开串口调试窗口,设置好波特率9600,可以看到获取到的光照强度和LED当前的状态。

风行男孩制作

可以试着用手挡住BH1750光照强度传感器的感应面,可以看到光照值在变化,当光照值小于50lux时会自动点亮LED。

模拟自动路灯

六、结束语

好咯,对于Arduino中BH1750(GY-302)+ LED模拟实现自动路灯的介绍就先到这里了。如果本文有帮助到您,留个痕迹,点个赞即可,我是风行男孩,咱们有缘再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2119955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何编写Prompt,利用AI高效生成图表——图表狐(FoxChart)指南

在数据可视化领域&#xff0c;图表是数据的重要表达方式。为了让更多人能够轻松高校地生成美观、专业的图表&#xff0c;图表狐(FoxChart)应用而生。然而&#xff0c;要想充分发挥AI的潜力&#xff0c;编写合适的Prompt至关重要。本文介绍一些编写Prompt的原则&#xff0c;帮助…

代码随想录算法训练营第39天|198.打家劫舍、 213.打家劫舍II、337. 打家劫舍 III

目录 198.打家劫舍1、题目描述2、思路3、code4、复杂度分析 213.打家劫舍II1、题目描述2、思路3、code4、复杂度分析 337. 打家劫舍 III1、题目描述2、思路3、code4、复杂度分析 198.打家劫舍 题目链接&#xff1a;添加链接描述 1、题目描述 你是一个专业的小偷&#xff0c;计…

8、用户行为数据同步

1、 数据通道 用户行为数据由Flume从Kafka直接同步到HDFS&#xff0c;由于离线数仓采用Hive的分区表按天统计&#xff0c;所以目标路径要包含一层日期。具体数据流向如下图所示。 2、 日志消费Flume配置概述 按照规划&#xff0c;该Flume需将Kafka中topic_log的数据发往HDFS。…

cmake编译MQTT-C源码

Windows端编译MQTT-C源码&#xff0c;获取mqttc库&#xff08;动态库与静态库&#xff09;&#xff0c;用于集成到Qt工程中使用mqtt订阅与发布功能。 编译源码与编译出来的mqttc动态库、静态库下载​​​​​​​​​​​​​​https://download.csdn.net/download/qq_38159549…

直播怎么录屏?录屏网页的工具有吗?推荐这3款你千万不要错过~

直播与网页录屏&#xff1a;三款必备录屏软件推荐 为什么要记录直播&#xff1f;直播可以捕捉实时发生事件&#xff0c;是真真实实的one take&#xff0c;更重要的是可以记录直播画面中的实时弹幕、评论区的互动&#xff0c;无论是激动人心的体育赛事、教育课程还是互动性强的连…

C++11 14 17 20 23进化史

C11、C14、C17、C20和C23是C语言标准的不同版本&#xff0c;它们之间在功能、特性和语法上存在一些区别。以下是对这些版本主要区别的概述&#xff1a; C11 C11是C语言的一个重要标准&#xff0c;引入了大量新特性和改进&#xff0c;使C变得更加易用和强大。主要特性包括&…

Qt工程使用MQTT-C库与mqtt服务器数据通信

实现mqtt订阅与发布话题&#xff0c;与mqtt服务器进行数据通信 编译环境&#xff1a;Qt5.15.2 vs2019 需要mqttc库&#xff1a;mqttc.lib, mqttc.dll&#xff08;根据MQTT-C源码编译出来的库&#xff0c;参考cmake编译MQTT-C源码-CSDN博客&#xff09; 一、Qt pro文件编写 …

android kotlin 基础复习 继承 inherit

1、新建文件kt 2、代码&#xff1a; /**用户基类**/ open class Person1(name:String){/**次级构造函数**/constructor(name:String,age:Int):this(name){//初始化println("-------基类次级构造函数---------")println("name:${name},age:${age}")} }/**子…

信息安全工程师(1)计算机网络分类

一、按分布范围分类 广域网&#xff08;WAN&#xff09;&#xff1a; 定义&#xff1a;广域网的任务是提供长距离通信&#xff0c;运送主机所发送的数据。其覆盖范围通常是直径为几十千米到几千千米的区域&#xff0c;因此也被称为远程网。特点&#xff1a;连接广域网的各个结点…

计算机毕业设计 财会信息管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

【吊打面试官系列-Redis面试题】怎么理解 Redis 事务?

大家好&#xff0c;我是锋哥。今天分享关于【怎么理解 Redis 事务&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 怎么理解 Redis 事务&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 1&#xff09;事务是一个单独的隔离操作&#xff1…

【LabVIEW学习篇 - 22】:ActiveX

文章目录 ActiveXActiveX打开Windows颜色选择对话框ActiveX将浏览器嵌入到前面板 ActiveX ActiveX是微软推出的一个开放的技术集的统称&#xff0c;它是很早之前出现的OLE(object linking and Embedding)技术的扩展&#xff0c;它是基于COM(Component Object Model)技术而建立…

meta元素

1&#xff0c;meta元素有4个全局属性 charset 设置文档的编码类型&#xff0c;通常设置为utf-8 <meta charset"utf-8" /> content 配合name或者http-equiv属性使用&#xff0c;为其value、 name 元数据名称(name的值)说明application name当前页所属Web应用系…

进程替换篇

文章目录 目录 前言 1.进程替换概念 2.进程替换的原理 3.进程替换的接口 4.接口功能验证 ①execl接口演示 ②execlp接口演示 ③execle接口演示 ④execv接口验证 5.尝试写一个自己的shell【了解】 前言 你一定见过类似于这样的“黑框框”&#xff0c;这个“黑框框”其实就是…

js 请求api + 解析数据 2个例子

起因&#xff0c; 目的: 补补 js 基础。 例1&#xff0c; 请求天气 api&#xff0c; 天气数据api js 中的 await await 关键字只能在 async 函数内部使用。函数内部可以使用 await&#xff0c;但是在函数外部直接使用 await 是不允许的。 async function fetchWeatherData…

[mysql]最基本的SELECT...FROM结构

第0种&#xff1a;最基本的查询语句 SELECT 字段名&#xff0c;字段名 FROM 表名 SELECT 1&#xff1b; SELECT 11,3*2&#xff1b; FROM SELECT 11,3*2 FROM DUAL&#xff1b;#dual&#xff1a;伪表 我们可以用它来保持一个平衡 这里我们的值不需要在任何一个表里&#xf…

MyBaits的初理解

一.Mybaits的简介 Mybaits就是对JDBC的简化&#xff0c;就是对持久化的实现。 二.基础 需要导的dependencies <dependencies><!-- mybatis依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId>&l…

第 5 章多视图几何

本章讲解如何处理多个视图&#xff0c;以及如何利用多个视图的几何关系来恢复照相机位置信息和三维结构。通过在不同视点拍摄的图像&#xff0c;我们可以利用特征匹配来计算出三维场景点以及照相机位置。本章会介绍一些基本的方法&#xff0c;展示一个三维重建的完整例子&#…

获取多行文本内容,去掉首尾空格、去掉空字符串,解析为文本数组

核心代码 // 获取多行文本内容&#xff0c;去掉首尾空格、去掉空字符串&#xff0c;解析为文本数组 getMultiLineTexts(textareaValue) {return textareaValue.split("\n").map((v) > v.split("\t").join("").trim()).filter((v, i, ar) &g…

Qt | ubuntu20.04安装Qt6.5.3并创建一个example完整教程(涉及诸多开发细节,商用慎重)

点击上方"蓝字"关注我们 01、下载 >>> 下载Qt在线安装包 这里采用镜像地址进行下载,避免网络过慢。 镜像地址:http://mirrors.ustc.edu.cn/qtproject/archive/online_installers/4.5/ 选择最新版本下载,如截至目前最新版本为qt-unified-linux-x64-4.5.2…