Arduino程序设计(三) 光照采集 + 温度采集

news2024/9/22 1:37:19

光照采集 + 温度采集

  • 前言
  • 一、光敏电阻检测环境光
  • 二、DS18B20检测环境温度
  • 总结
  • 参考文献


前言

  • 本文主要介绍两种常见的传感器采集环境参数,即光照传感器和温度传感器。
  • 光照传感器采用光敏电阻GL3516(5-10K)检测环境光。
  • 温度传感器采用DS18B20检测环境温度。

一、光敏电阻检测环境光

  • 光敏电阻:一种电阻值随照射光强度增加而下降的电阻。
  • 光敏电阻的使用方法:将其作为一个电阻接入电路中,然后使用analogRead() 读取电压。
  • ESP8266EX有1个多通道的 10 bit 模拟数字转换器A0 ,输入电压 0-1V 对应 0-1023 的整数值,模拟输入函数为:
analogRead(pin)
  • 实验采用ESP8266EX裸芯片,通过自主搭建电路的方式,实现预设功能。
  • 光敏电阻检测环境光的电路图,如下图所示:
    在这里插入图片描述
  • 注意:
  • ① TOUT为ESP8266EX的引脚6,采集TOUT的ADC值;
  • ② TOUT对应的模拟量输入引脚为A0;
  • ③ 通过模拟输入口A0,读取分压后得到的电压。

代码实现:

//光敏电阻检测环境光

int light_value = 0;               //定义光照强度变量light_value,置初始值为0

void setup() {
  Serial.begin(9600);              //设置串口通信波特率为9600
}

void loop() {
  light_value = analogRead(A0);    // 读出当前光线强度
  Serial.println(light_value);     //输出到串口显示
  delay(1000);                     //间隔1s读取1次光线强度值
}
  • 运行以上程序,打开串口监视器,Arduino通过串口输出了当前从光敏电路读到的模拟值,串口显示界面如下:
    在这里插入图片描述
  • 注释:
  • ① 程序中使用了Serial.begin()、Serial.println() 语句,Serial.begin()功能为初始化串口,Serial.println() 功能为串口输出数据;
  • ② 采集的光照强度对应的端口电压,计算公式:
    在这里插入图片描述
  • Vout为该光照强度对应的端口电压,light 为采集的光照强度值。

二、DS18B20检测环境温度

  • DS18B20数字温度传感器是美国DALLAS公司生产的单总线数字温度传感器。
  • DSl820数字温度计提供 9 位(二进制)温度读数指示器件的温度信息经过单线接口送入 DSl8B20 或从 DSl8B20 送出,因此从主机 CPU 到DSl820 仅需一条线(和地线) DSl820 的电源可以由数据线本身提供而不需要外部电源 。
  • DS18B20测温原理:把芯片把感知到的温度换成数值放在数据寄存器里面,要想得到寄存器里面的数据,只有按照DALLAS规定的一种时序才能正确传出数据,这种时序被称为单总线,cpu就可通过单总线协议,取得DS18B20里面的温度值。
  • DS18B20采集环境温度需要加载OneWire和DallasTemperature两个程序库,调用库函数,极大地简化了温度采集程序的编写。
  • 实验采用ESP8266EX裸芯片,通过自主搭建电路的方式,实现预设功能。
  • DS18B20检测环境光的电路图,如下图所示:
    在这里插入图片描述

代码实现:

//DS18B20采集环境温度

#include <OneWire.h>                             //加载单总线库函数
#include <DallasTemperature.h>                   //加载DS18B20温度采集库函数
 
#define ONE_WIRE_BUS 5                           //定义DS18B20数据口连接ESP8266的5号IO上
 
OneWire oneWire(ONE_WIRE_BUS);                   //初始化连接在单总线上的单总线设备
DallasTemperature sensors(&oneWire);             
 
void setup(void)
{
  Serial.begin(9600);                           //设置串口通信波特率为9600
  Serial.println("Dallas Temperature IC Control Library Demo");
  sensors.begin();                              //初始化库
}
 
void loop(void)
{
  Serial.print(" Requesting temperatures...");   //打印Requesting temperatures...
  sensors.requestTemperatures();                 //发送命令获取温度
  Serial.println("DONE");                        //打印DONE,再换行 
  Serial.print("Temperature for Device1 is: ");  //打印Temperature for Device1 is: 
  Serial.print(sensors.getTempCByIndex(0));      //打印传感器的温度值
 
  delay(500);                                    //间隔500ms,获取1次温度值
}
  • 运行以上程序,打开串口监视器,Arduino通过串口输出了当前从温度采集电路读到的模拟值,串口显示界面如下:
    在这里插入图片描述
  • 注释:串口打印的第一行中数字22.5,显示当前环境温度为22.5℃。以此类推,得到其余行显示的环境温度值。

总结

  • 本文主要介绍了采用光敏电阻和DS18B20,进行环境光检测和环境温度检测,采用自主搭建电路的形式,实现目标功能,体现了软硬件结合的思想。

参考文献

参考文献1: 光敏电阻检测环境光实验
参考文献2: Arduino教程——DS18B20温度传感器

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

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

相关文章

2022Q3家电行业高增长细分市场分析(含热门品类数据)

2022年&#xff0c;在大环境的影响下&#xff0c;大众消费偏好更趋于理性化、追求高性价比&#xff0c;不少行业增速有所放缓&#xff0c;在此背景下&#xff0c;2022年Q3季度中&#xff0c;消费市场中仍有一些高增长概念涌现。 在家电行业中&#xff0c;我们发现了3个高增长品…

【重识云原生】第六章容器基础6.4.9.5节——端点切片(Endpoint Slices)

1 EndpointSlice特性 Kubernetes v1.21 [stable] 端点切片&#xff08;EndpointSlices&#xff09; 是一个新 API&#xff0c;它提供了 Endpoint API 可伸缩和可拓展的替代方案。EndpointSlice 会跟踪 Service Pod 的 IP 地址、端口、readiness 和拓扑信息。 在 Kubernetes v…

一文看懂页面置换算法

页面置换算法分为两类 1、局部页面置换算法 最优页面置换算法&#xff08;OPT、optimal&#xff09;先进先出算法&#xff08;FIFO&#xff09;最近最久未使用算法&#xff08;LRU,Least Recently Used&#xff09;时钟页面置换算法&#xff08;Clock&#xff09;最不常用算法…

【算法 | 实验18】在字符矩阵中查找给定字符串的所有匹配项

文章目录题目描述思路分析bug记录&#xff1a;"error: >> should be > > within a nested template argument list"代码题目描述 题目 在字符矩阵中查找给定字符串的所有匹配项 给定一个MN字符矩阵&#xff0c;以及一个字符串S&#xff0c;找到在矩阵中所…

给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件

文章目录一、前言二、发现提交的临时文件三、去掉临时文件的方法3.1 添加.gitignore3.2 删除临时文件缓存3.3 添加后的效果一、前言 最近维护代码过程中&#xff0c;发现某APP代码库里被提交了许多临时文件&#xff0c;而这些临时文件每次都会变化&#xff0c;所以导致每次修改…

为什么要写单测

一、什么是单元测试 “在计算机编程中&#xff0c;单元测试又称为模块测试&#xff0c;是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中&#xff0c;一个单元就是单个程序、函数、过程等&#xff1b;对于面向对象编程&#xff0c;最…

大屏经典组件:“无限滚动” 从分析到开发

&#x1f4d6;阅读本文&#xff0c;你将 理解大屏 “无限滚动组件” 的开发思路跟随作者&#xff0c;一步步完成一个高性能 “无限滚动组件” 的开发收获一份该实现的粗糙源码。 一、无限滚动&#xff1a;事件/告警 的有力帮手 1.1 为什么需要滚动列表 大屏之所以 “炫酷” …

稳压二极管稳压电路如何设计

在一些电流不大的地方&#xff0c;一般毫安级别&#xff0c;有时候我们可以利用稳压二极管去设计一个我们需要的电压。 大家可以看下稳压二极管的伏安曲线 在反向电压下&#xff0c;尽管电流在很大的范围内变化&#xff0c;而稳压二极管两端的电压却基本上稳定在击穿电压附近&a…

[附源码]java毕业设计旅游产品销售管理

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

CISCN 2022 初赛 web 复现

[CISCN 2022 初赛]ezpop 可以看到版本&#xff0c;那么直接上网找链子打 www.zip 查看路由&#xff0c;是 Index/test&#xff0c;然后 post 传参 a <?php // 保证命名空间的一致 namespace think {// Model需要是抽象类abstract class Model {// 需要用到的关键字priv…

【vue】vuex中modules的基本用法

1&#xff0c;什么时候用modules 由于使用单一状态树&#xff0c;应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时&#xff0c;store 对象就有可能变得相当臃肿。 为了解决以上问题&#xff0c;Vuex 允许我们将 store 分割成模块&#xff08;module&#xff09…

NFT交易平台开发 创建NFT数字藏品平台

为什么需要 NFT 市场&#xff1f; NFT Marketplace 允许用户购买、出售、交易、查看或创建自己的 NFT&#xff0c;就像他们需要一个市场来购买物理或数字世界中的大多数产品一样。几乎每个人都可以进入 NFT 市场&#xff0c;但要做到这一点&#xff0c;用户必须满足以下要求&a…

第3关:节点状态检查、数据查看和更新

首先&#xff0c;需要启动服务器&#xff0c;并使用zkCli.sh连接服务器&#xff0c;进入客户端命令行界面&#xff08;如第一关所述&#xff09;。 节点状态包含以下信息&#xff1a; czxid: 节点创建时的时间戳。mzxid: 节点最新一次更新发生时的时间。ctime&#xff1a; 节…

[附源码]java毕业设计篮球装备商城系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

微服务中的服务发现是什么?

作者&#xff1a;罗泽轩 摘要&#xff1a;本文通过服务发现的相关背景和 APISIX 对于服务发现的应用与实践&#xff0c;来介绍微服务中的服务发现内容。 在互联网刚开始出现的年代&#xff0c;人们要想访问某个在线服务&#xff0c;需要输入一长串的 IP 地址。IP 地址虽然不长&…

PDF怎么编辑修改文字?

PDF怎么编辑修改文字&#xff1f;PDF大家都不陌生&#xff0c;我们经常会接触到各种类型的PDF文档&#xff0c;尽管大多数人对PDF的需求仅仅是阅读&#xff0c;但是也有很多人会需要去编辑和修改PDF文件&#xff0c;那你们知道如何编辑和修改PDF文件吗&#xff1f;金闪PDF编辑器…

提取图像直方图(图像处理)

继直方图规定化后的研究 由于直方图规定化是根据两张图片的累计直方图进行图像的处理。对于这个处理过程&#xff0c;我尝试了很图像进行替换色系&#xff0c;但是没有找到一个相对合适案例&#xff0c;来体现直方图规定化这个算法的精妙之处。在多次尝试中&#xff0c;我发现…

低代码核心:代码生成还是模型解释?

2020年第一届低代码研讨会上&#xff0c; Jordi Cabot发表了一篇文章&#xff08;或者说观点&#xff09;&#xff0c;对比了低代码和模型驱动开发的关系&#xff0c;认为低代码等于模型驱动开发。但实际上&#xff0c;不少低代码系统并不是使用模型驱动的&#xff0c;而是采用…

node的express模块

express的概述: express是一个提供web服务的框架&#xff08;内置http模块&#xff09;&#xff0c;他简化了http的相关内容&#xff0c;将对应的内容封装为了特定的方法 安装: npm i express -S 导入以及代码: //导入express 是一个函数 const expressrequire(express) //cre…

做机器人开发,你一定绕不开的模块!

Allspark 机载电脑 Allspark 是阿木实验室为广大AI智能硬件开发者打造的一款微型边缘计算机。在设计之初就定义了尺寸小巧、重量轻、算力强、可靠、扩展性高的特点。Allspark机身采用铝合金新材料外壳设计&#xff0c;内置静音散热风扇&#xff0c;尺寸94mm*59mm*37mm&#xff…