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

news2024/11/27 15:55:15

在这里插入图片描述

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)实验串口返回情况

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

斯坦福「小镇」开源AI智能体;小米应用商店将要求AI应用符合资质标准

&#x1f989; AI新闻 &#x1f680; 斯坦福「小镇」开源AI智能体 摘要:斯坦福研究人员开源了一个类似《西部世界》的数字化「小镇」,里面有25个AI智能体可以生活、工作、社交。这项研究被视为AGI的重要开端,可能会改变游戏、企业应用领域。网友期待这项技术改善游戏NPC的交互…

【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(上)

前提介绍 Feign是SpringCloud中服务消费端的调用框架&#xff0c;通常与ribbon&#xff0c;hystrix等组合使用。由于遗留原因&#xff0c;某些项目中&#xff0c;整个系统并不是SpringCloud项目&#xff0c;甚至不是Spring项目&#xff0c;而使用者关注的重点仅仅是简化http调…

软工导论知识框架(七)面向对象设计

一.设计准则 分析&#xff1a;提取、整理用户需求&#xff0c;建立问题域精确模型。设计&#xff1a;转变需求为系统实现方案&#xff0c;建立求解域模型。 在实际的软件开发过程中分析和设计的界限是模糊的&#xff0c;分析和设计活动是一个多次反复迭代的过程。分析的结果可…

无涯教程-Perl - msgsnd函数

描述 此功能使用可选的FLAGS将消息MSG发送到消息队列ID。 语法 以下是此函数的简单语法- msgsnd ID, MSG, FLAGS返回值 该函数在错误时返回0,在成功时返回1。 Perl 中的 msgsnd函数 - 无涯教程网无涯教程网提供描述此功能使用可选的FLAGS将消息MSG发送到消息队列ID。 语法…

接地电阻测试仪的原理和使用事项

接地电阻测试仪&#xff08;Ground Resistance Tester&#xff09;是用来测量接地电阻的一种仪器。接地系统是指用于保护人员和设备的设施&#xff0c;它将电流引导到地下&#xff0c;将任何潜在危险的电流导向地面。 接地电阻测试仪的作用是通过测量接地系统的电阻值来评估其…

C++ STL string类模拟实现

目录 string类成员变量 一.构造函数 二.析构函数 三.拷贝构造 四.size(),capacity() 五.operator [ ] 六. operator 七.字符串比较 八.reserve&#xff08;&#xff09; 九.push_back&#xff08;&#xff09;&#xff0c;append&#xff08;&#xff09; 十.operato…

【雕爷学编程】Arduino动手做(12)---霍尔磁场传感器模块5

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

数据归一化:优化数据处理的必备技巧

文章目录 &#x1f340;引言&#x1f340;数据归一化的概念&#x1f340;数据归一化的应用&#x1f340;数据归一化的注意事项与实践建议&#x1f340;代码演示&#x1f340;在sklearn中使用归一化&#x1f340;结语 &#x1f340;引言 在当今数据驱动的时代&#xff0c;数据的…

Vue在页面输出JSON对象,测试接口可复制使用

效果图&#xff1a; 数据处理前&#xff1a; 数据处理后&#xff1a; 代码实现&#xff1a; HTML: <el-table height"600" :data"tableData" border style"width: 100%" tooltip-effect"dark" size"mini"><el-…

Django笔记之数据库函数之日期函数

日期函数主要介绍两个大类&#xff0c;Extract() 和 Trunc() Extract() 函数作用是提取日期&#xff0c;比如我们可以提取一个日期字段的年份&#xff0c;月份&#xff0c;日等数据 Trunc() 的作用则是截取&#xff0c;比如 2022-06-18 12:12:12&#xff0c;我们可以根据需求…

深度学习基础知识笔记

深度学习要解决的问题 1 深度学习要解决的问题2 应用领域3 计算机视觉任务4 视觉任务中遇到的问题5 得分函数6 损失函数7 前向传播整体流程8 返向传播计算方法1 梯度下降9 神经网络整体架构 11 神经元个数对结果的影响12 正则化和激活函数1 正则化2 激活函数 13 神经网络过拟合…

人工智能可解释性(二)(梯度计算,积分梯度等)

目录 1.定义 2.详述 2.1局部解释 可视化方法 梯度计算 2.2积分梯度Integrated Gradients&#xff08;梯度计算进阶&#xff09; 2. 3全局解释 2.3.1Activation Maximization 2.3.2GAN,VAE 2. 4用一个可解释模型解释不可解释模型 2. 4.1LIME 局部解释 参考文献 1.定义 可…

access怎么做进销存?借助access开发进销存管理应用

我不太推荐使用Access&#xff0c;因为他的缺点还是比较明显的&#xff1a; 1、软件自身限制 不能用于互联网&#xff1a;使用Access制作好的管理软件&#xff0c;访问页只能在局域网中使用&#xff1b;只能在Windows上运行&#xff1a;Access仅支持windows的运行环境&#x…

从零开始学习 Java:简单易懂的入门指南之多态(十)

多态&包&final&权限修饰符&代码块 第一章 多态1.1 多态的形式1.2 多态的使用场景1.3 多态的定义和前提1.4 多态的运行特点1.5 多态的弊端1.6 引用类型转换1.6.1 为什么要转型1.6.2 向上转型&#xff08;自动转换&#xff09;1.6.3 向下转型&#xff08;强制转换…

【将回声引入信号中】在语音或音频文件中引入混响或简单回声,以研究回声延迟和回波幅度对生成的回波信号感知的影响(Matlab代码实现)

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

积分代换和周期函数

昨晚上看书&#xff0c;有一个稳定随机过程的例题&#xff0c;涉及积分上下限代换、周期函数的微积分性质等知识点。这种题型以前肯定接触过&#xff0c;当下遇到了&#xff0c;思维仍然迷迷糊糊&#xff0c;像是一团乱麻&#xff0c;纠缠不清&#xff0c;照着答案思考了半天&a…

[Blender]Geometry nodes altermesh to UE

首先要先下载插件 AlterMesh – Use geometry nodes inside Unreal 下载对应版本的插件后 打开UE&#xff0c;在对应的设置里面挂上blender.exe的路径 去官方下载一个Blender Geometry nodes 的示例 Demo Files — blender.org​​​​​​

沃罗诺伊图(Voronoi):迷人的世界【1/2】

一、说明 Voronoi图&#xff08;也称为狄利克雷镶嵌或泰森多边形&#xff09;在自然界中无处不在。你已经遇到过他们数千次了&#xff0c;但也许没有这样称呼它。Voronoi图很简单&#xff0c;但它们具有令人难以置信的特性&#xff0c;在制图&#xff0c;生物学&#xff0c;计算…

【EI/SCOPUS征稿】第九届材料加工与制造工程国际学术会议(ICMPME 2023)

第九届材料加工与制造工程国际学术会议 2023 9th International Conference on Materials Processing and Manufacturing Engineering (ICMPME 2023) 第九届材料加工与制造工程国际学术会议(ICMPME 2023)定于2023年10月13-15日在中国南昌隆重举行。会议主要围绕“材料加工”、…

c++11 标准模板(STL)(std::basic_fstream)(五)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_fstream : public std::basic_iostream<CharT, Traits> 类模板 basic_fstream 实现基于文件的流上的高层输入/输出。它将 std::basic_i…