【雕爷学编程】Arduino动手做(24)---水位传感器模块3

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十四:水位传感器 液滴传感器 水深检测模块 水位检测模块 Water depth Sensor

在这里插入图片描述

(6)实验串口返回情况(往杯子里面慢慢倒水,水位逐渐升高)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
(9)拿住水位传感器,校准实际水位的串口数值,校准时的动态波形见下图

在这里插入图片描述

(10)校准实验时的场景图

实际校准的实验串口值为100-240之间(大概值)

在这里插入图片描述
2、程序二:用于检测水的存在(泄漏、溢出、洪水、雨水等情况)
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序二:用于检测水的存在(泄漏、溢出、洪水、雨水等情况)
*/

#define LED_PIN     13
#define POWER_PIN   7
#define SIGNAL_PIN  A0
#define THRESHOLD   100

int value = 0; // 存储传感器值的变量

void setup() {
  Serial.begin(9600);
  pinMode(LED_PIN,   OUTPUT);   // 将 D13 引脚配置为输出,接LED
  pinMode(POWER_PIN, OUTPUT);   // 将 D7 引脚配置为配置为输出,接水位传感器+
  digitalWrite(POWER_PIN, LOW); // 关闭传感器
  digitalWrite(LED_PIN,   LOW); // 关闭LED
  Serial.println("检测准备就绪!");
}

void loop() {
  digitalWrite(POWER_PIN, HIGH);  // 打开传感器
  delay(10);                      // 等待 10 毫秒
  value = analogRead(SIGNAL_PIN); // 从传感器读取模拟值
  digitalWrite(POWER_PIN, LOW);   // 关闭传感器

  if (value > THRESHOLD) {
    Serial.println("检测到水");
    digitalWrite(LED_PIN, HIGH);  // 打开 LED
  } else {
    digitalWrite(LED_PIN, LOW);   // 关闭LED
  }
}

(2)实验串口返回情况

在这里插入图片描述
(3)实验场景图(检测到水时,点亮LED)

在这里插入图片描述
3、程序三:通过水传感器检测水的情况
(1)实验开源仿真编程(Linkboy V4.63)

在这里插入图片描述
(2)实验串口返回情况

在这里插入图片描述
4、程序四:分三档测量水位(低绿色LED,中蓝色LED,高红色LED)
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序四:分三档测量水位(低绿色LED,中蓝色LED,高红色LED)
  使用:5MM三色RGB全彩LED模块
*/

void setup() {
  Serial.begin(9600);
  pinMode(8, OUTPUT); // 设置D8为输出
  pinMode(9, OUTPUT); // 设置D9为输出
  pinMode(10, OUTPUT); // 设置D10为输出
}

void loop() {
  int s1 = analogRead(A0);
  Serial.println(s1); //串口输出传感器值
  delay(50);

  if (s1 > 350 && s1 < 480 )
  {
    digitalWrite(10, HIGH);    // 中水位时蓝色LED亮
    Serial.println("中水位");
  }
  else
  {
    digitalWrite(10, LOW);       // 否则熄灭
  }

  if (s1 < 350 )
  {
    digitalWrite(9, HIGH);    // 低水位时绿色LED亮
    Serial.println("低水位");
  }
  else
  {
    digitalWrite(9, LOW);    // 否则熄灭
  }

  if (s1 > 480 )
  {
    digitalWrite(8, HIGH);  // 高水位时红色LED亮
    Serial.println("高水位");
  }
  else
  {
    digitalWrite(8, LOW);  // 否则熄灭
  }
  delay(1500);
}

(2)实验串口返回情况

在这里插入图片描述
(3)实验场景图

在这里插入图片描述

5、程序五:高水位声光报警
(1)实验开源图形编程(Mind+、Mixly、编玩边学)

在这里插入图片描述

(2)实验场景图

在这里插入图片描述

6、程序六:使用1602 LCD显示屏显示水位传感器值
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序六:使用1602 LCD显示屏显示水位传感器值
*/

#include <LiquidCrystal_I2C.h>
// 用接口引脚的编号初始化库
LiquidCrystal_I2C lcd(0x27, 16, 2);
// 将 LCD 地址设置为 0x27,用于 16 个字符和 2 行显示常量
int waterSensor = 0;
int waterValue = 0;

void setup() {
  lcd.init(); //初始化液晶屏
  lcd.backlight(); //打开背光
  lcd.setCursor(0, 0);
  lcd.print("Water Sensor");
}

void loop() {
  int waterValue = analogRead(waterSensor); //获取水传感器值
  lcd.setCursor(6, 1); //将光标放在6列2行
  lcd.print(waterValue); //值显示在lcd上
  delay(200); //延迟200ms
  lcd.setCursor(0, 1); //将光标放在1列2行
  //添加16个空格以确保第1行中剩余的字符(如果有)被清除
  lcd.print("                ");
}

(2)实验场景图(未放到水杯里,传感器值为0)

在这里插入图片描述

(3)放到水杯里,水位传感器值为480

在这里插入图片描述

7、程序七:获取水位传感器模拟信号数据

(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序七:获取水位传感器模拟信号数据
*/

int val = 0; //定义一个变量 val ,初始化值为0

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

void loop() {
  val = analogRead(A0); // 获取A0模拟口的数据,并赋值给 val 变量
  Serial.print("val = "); // 串口输出 val 当前的数据
  Serial.print(val);

  if(val < 200) { // 如果 val 小于200
    Serial.println(" | dry"); // 说明很干,没有水
  } else if(val < 450) { // 如果 小于 450
Serial.println(" | water level: ~ 0-1 cm"); 
// 水位大约在0-1cm ,以下语句如此类推
  } else if(val < 500) {
    Serial.println(" | water level: ~ 1-2 cm");
  } else if(val < 540) {
    Serial.println(" | water level: ~ 2-3 cm");
  } else if(val < 600) {
    Serial.println(" | water level: ~ 3-4 cm");
  } else {
    Serial.println(" | water level: over 4 cm");
  }
  delay(1000); // 等待1秒
}

(2)实验串口返回情况

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

激活函数总结(五):Shrink系列激活函数补充(HardShrink、SoftShrink、TanhShrink)

激活函数总结&#xff08;五&#xff09;&#xff1a;Shrink系列激活函数补充 1 引言2 激活函数2.1 HardShrink激活函数2.2 SoftShrink激活函数2.3 TanhShrink激活函数 3. 总结 1 引言 在前面的文章中已经介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swis…

基本动态规划问题的扩展

基本动态规划问题的扩展 应用动态规划可以有效的解决许多问题&#xff0c;其中有许多问题的数学模型&#xff0c;尤其对一些自从57年就开始研究的基本问题所应用的数学模型&#xff0c;都十分精巧。有关这些问题的解法&#xff0c;我们甚至可以视为标准——也就是最优的解法。…

Vue组件库

Vue组件库 ViteVue3TypescriptTSX 1、项目搭建 1.1、创建项目&#xff08;yarn&#xff09; D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh pa…

为新手和非技术人员提供扩展Web网站提供一个升级指南

本指南总结了扩展的基本原则&#xff0c;从一台服务器扩展到能够服务数百万用户的Web应用程序。它面向在技术领域工作的新手和非开发人员。因此&#xff0c;如果您刚刚部署了您的多云平台VPN设置&#xff0c;那么本文并不适合您。 话不多说&#xff0c;那就让我们开始吧&#x…

基于灰狼优化(GWO)、帝国竞争算法(ICA)和粒子群优化(PSO)对梯度下降法训练的神经网络的权值进行了改进(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

存储过程的学习

1&#xff0c;前言 这是实习期间学习的&#xff0c;我可能是在学校没好好听课&#xff0c;&#xff08;或者就是学校比较垃&#xff0c;没教这部分&#xff0c;在公司经理让我下去自己学习&#xff0c;太难了&#xff0c;因为是公司代码很多部分都是很多表的操作&#…

SQL Server 查询数据并汇总相关技巧 23.08.08

GROUPING 是一个聚合函数,它产生一个附加的列&#xff0c;当用 CUBE 或 ROLLUP 运算符添加行时&#xff0c;附加的列输出值为1&#xff0c;当所添加的行不是由 CUBE 或 ROLLUP 产生时&#xff0c;附加列值为0。 仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相联系的选择…

基于grpc从零开始搭建一个准生产分布式应用(1) - 开始准备

开始前必读&#xff1a;​​基于grpc从零开始搭建一个准生产分布式应用(0) - quickStart​​ 本来笔者并不想开设这个系列&#xff0c;因为工作量比较大&#xff0c;另外此专题的技术点也偏简单。最近复盘了下最近的工作&#xff0c;发现一个问题就是各个互联网大厂一般都会有…

AcWing算法提高课-4.2.3一个简单的整数问题2

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 给定一个长度为 N N N 的数列 A A A&#xff0c;以及 M M M 条指令&#xff0c;每条指令可能是以下两种之一&#xff1a; C l r…

嵌入式Linux下LVGL的移植与配置

一.sdk源码下载路径 1.官方源码下载路径如下: ​​​​​​ https://github.com/lvgl/lvgl git下载方式 git clone https://github.com/lvgl/lvgl.git 2.个人移植好的源码8.2版本下载路径: 链接&#xff1a;https://pan.baidu.com/s/1jyqIennsQpv-RB4RyKvZyg?pwdc68e 提取…

Spring-Cloud-Loadblancer详细分析_2

LoadBalancerClients 终于分析到了此注解的作用&#xff0c;它是实现不同服务之间的配置隔离的关键 Configuration(proxyBeanMethods false) Retention(RetentionPolicy.RUNTIME) Target({ ElementType.TYPE }) Documented Import(LoadBalancerClientConfigurationRegistrar…

电脑开不了机如何解锁BitLocker硬盘锁

事情从这里说起&#xff0c;不想看直接跳过 早上闲着无聊&#xff0c;闲着没事干&#xff0c;将win11的用户名称改成了含有中文字符的用户名&#xff0c;然后恐怖的事情发生了&#xff0c;蓝屏了… 然后就是蓝屏收集错误信息&#xff0c;重启&#xff0c;蓝屏收集错误信息&…

基于深度学习的3D城市模型增强【Mask R-CNN】

在这篇文章中&#xff0c;我们描述了一个为阿姆斯特丹 3D 城市模型自动添加门窗的系统&#xff08;可以在这里访问&#xff09;。 计算机视觉用于从城市全景图像中提取有关门窗位置的信息。 由于这种类型的街道级图像广泛可用&#xff0c;因此该方法可用于较大的地理区域。 推荐…

如何把图片转成gif?一分钟学会在线一键生成gif

平时我们在聊天的时候&#xff0c;经常会发送一下有趣的表情包&#xff0c;这些表情包是怎么做出来的呢&#xff1f;其实可以使用在线gif生成的方法&#xff0c;下面就来给大家演示一下图片制作gif&#xff08;https://www.gif.cn&#xff09;的具体步骤&#xff0c;一起来看看…

Flink学习记录

可以快速搭建一个Flink编写程序 mvn archetype:generate \-DarchetypeGroupIdorg.apache.flink \-DarchetypeArtifactIdflink-quickstart-java \-DarchetypeVersion1.17.1 \-DgroupIdcom.zxx.langhuan \-DartifactIdlanghuan-flink \-Dversion1.0.0-SNAPSHOT \-Dpackagecom.zx…

《全生命周期眼健康管理》助力健康科学用眼

8月8日下午&#xff0c;烟台正大光明眼科医院眼健康管理中心张提主任受邀来到烟台市残疾人事务综合服务中心&#xff0c;为残联康复训练教师及相关工作人员进行了《全生命周期眼健康管理》讲座。 烟台正大光明眼科医院眼健康管理中心张提主任 “全生命周期眼健康”这一理念其宗…

流水线时序调度之规避冲突

1 写在前面的&#xff1a; 其实略微一个大点的机器&#xff0c;一个测试流程需要若干个步骤&#xff0c;都可以用流水线的思维去看待它&#xff1b; 我之前也没往流水线的角度去考虑&#xff0c;那有些机器的时序调度是不好理解的&#xff0c;甚至计算个通量都很麻烦&#xff…

15-1_Qt 5.9 C++开发指南_Qt多媒体模块概述

多媒体功能指的主要是计算机的音频和视频的输入、输出、显示和播放等功能&#xff0c;Qt 的多媒体模块为音频和视频播放、录音、摄像头拍照和录像等提供支持&#xff0c;甚至还提供数字收音机的支持。本章将介绍 Qt 多媒体模块的功能和使用。 文章目录 1. Qt 多媒体模块概述2. …

pgAdmin开发工具之ERD

pgAdmin 是一个免费的 PostgreSQL 管理与开发平台&#xff0c;这篇文章介绍了它的安装与使用。 今天我们要介绍的是它的一个开发功能&#xff1a;实体关系图&#xff08;ERD&#xff09;工具。 ERD 工具可以使用图形化的方式表示数据库中的表、字段以及表之间的关系。 pgAdmin…

vue svg画渐变色线条

基于业务需求需要&#xff0c;需要使用svg画渐变色弧线并且采用虚线。并且封装成组件。 一、path路径 path路径是svg中最强大的图形&#xff0c;可以绘制各种svg所有能画的图形。 路径中的线是由d属性来绘制&#xff0c;属性参数由各种命令组成&#xff0c;以下是它的基本命…