树莓派实验中关于配置水位传感器的初步应用
项目场景:
通过树莓派连接AD转换器(PCF8591)和水位传感器,每隔0.1s进行一次检测
代码见下:
//液位传感器模块: VCC -> 5V; GND -> GND; DO -> DOPIN 0;AO ->A0;
#include <stdio.h>
#include <wiringPi.h>
#include <pcf8591.h>
#include <math.h>#define PCF 120 //PCF8591的基地址
#define DOpin 0
#define power 5000 //PCF8591电压值为5000mv
#define have_water_v 1500 //水位检测1500mv unsigned char Tx[5]; //发送电压字符串
int conersion_water(int mode);/*
水位检测驱动
MODE==1 采用模拟检测
MODE==2 采用数字检测
有水 1
无水 10
*/int conersion_water(int mode) {if (1==mode){int value;float adc_v; // Setup pcf8591 on base pin 120, and address 0x48pcf8591Setup (PCF, 0x48) ;value=analogRead(PCF+0); //A0采样 adc_v=value *power/255; //8通道 5v供电 单位毫伏 //生成TX 用于发送至手机端 Tx[0]=(int)(adc_v_1*1000)/1000+'0';Tx[1]='.'; Tx[2]=(int)(adc_v_1*1000)%1000/100+'0';Tx[3]=(int)(adc_v_1*1000)%100/10+'0';Tx[4]=(int)(adc_v_1*1000)%10+'0'; if (adc_v <have_water_v){return 1; //本次检测有水, 需要连续检测10次,同样结果可以认可 } if (adc_v >=have_water_v ) {return 10; } //本次检测无水 ,需要连续检测10次,同样结果可以认可 delay(100); //0.1s采样一次 //注释:等于号给谁需要讨论 }if (2==mode){if(digitalRead(DOpin)== 0) { //液位传感器用引脚为低电平delay_ms(10); //延时防抖动if(digitalRead(DOpin)== 0) { //液位传感器用引脚为低电平return 1; //有水 }else{return 10; //无水 } }delay(90); //0.1s采样一次 }}int main(void){int i;int A_text;A_text=0 // A_TEXT=10*10 or 10*1int D_text;D_text=0 // D_TEXT=10 or 1if (wiringPiSetup()==-1){printf("setup wiringpi filed!");return 1;}//数字检测法 /*while(1){pinMode(DOpin, INPUT);D_text=conersion_water(2);if (1==D_text){printf("water!");}if (10==D_text){printf("no water!");}D_text=0; }*///模拟检测法 /*while(1){ for (i=0;i<10;i++){A_text=A_text+conersion_water(1);}if (100 == A_text) {printf("no water!");}if (10 == A_text) {printf("water!");}A_text=0; } */return 0;
}
问题:
不太清楚电压和其值的关系;
产品说明采用模拟和数字,我们不确定哪一种更好。
解决方案:
通过实验给出了基本的线性规律。
树莓派实验中关于配置水位传感器的初步应用相关推荐
- 浏览器实验中的故障排除
NewVoiceMedia 全球电信与服务经理Alfred Brooks 遇到了客户联络中心代理报告的严重降级音频的问题,本文将介绍他是如何一步步分析问题并最终确定错误是由Chrome实验中对AEC3 ...
- 树莓派3B入门 - 硬件配置
树莓派3B入门 - 硬件配置 树莓派3B入门 - Linux镜像烧录lite32位版 前言 盖房子总是需要先选砖的,啊哈哈- 文章目录 树莓派3B入门 - 硬件配置 前言 1. 树莓派简介 1.1 树 ...
- 0.树莓派3上安装配置Archlinux
为什么80%的码农都做不了架构师?>>> 本文永久地址:https://my.oschina.net/bysu/blog/1557801 1 下载: 下载(不得不吐槽,官网上的 ...
- CCNP路由实验---12、配置分发列表和被动接口
一.实验拓扑图: 二.实验目的 1.在实验中应用到高级路由功能来操作路由更新,这些特性包括分发列表,默认路由,被动接口和路由重分布. 2.掌握高级路由特性来控制路由更新. 三.实验要求 1.公司 ...
- [Tesseract]Tesseract 在 Visual Studio 2012 中的配置及调用
一.Tesseract简介 Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持 ...
- 浅析 .Net Core中Json配置的自动更新
Pre 很早在看 Jesse 的Asp.net Core快速入门的课程的时候就了解到了在Asp .net core中,如果添加的Json配置被更改了,是支持自动重载配置的,作为一名有着严重" ...
- CCNP实验4-2:配置多区域和NBMA OSPF
[实验目的]: 在本次实验中,你将在单个帧中继网络中配置OSPF. 在完成本次实验之后,你需要完成下列任务: <?xml:namespace prefix = o ns = "urn: ...
- BSCI实验之十三:配置点到点链路OSPF及认证
实验拓扑: 实验要求:分别在RA/RB/RC(即图中的R1/R2/R3)上启用OSPF,注意观察它们的网络类型以及邻居关系,并观察认证后的特点. 实验目的:熟练进行点到点OSPF的基本配置和认证调试. ...
- Arcgis javascript那些事儿(二十)——dojo中djconfig配置、dojo与requirejs项目冲突
一.引言 由于项目一部分使用requirejs另一部分地图是用dojo开发(因为arcgis javascript使用的dojo),两个要和到一起,所以要求研究下如何把两者和到一起,花了两天时间看了看 ...
最新文章
- 【活动】人工智能产学研生态建设研讨会报名
- 资源 | Yann LeCun最新演讲:大脑是如何高效学习的?(附PPT+视频)
- 编程之美——买书问题:贪心算法
- 认识FPGA触发器的亚稳态
- 【大数据】获取一篇新闻的全部信息
- python爬虫之路--准备环境
- Strace诊断CPU跑高问题(java/php网站)
- iis 无法启动计算机,win10系统iis无法启动的详细步骤
- 就想了解服务器为什么1M带宽网速却达不到1M
- 如何使用shared_preferences?
- vm虚拟机获取ip地址
- stream流的使用
- clamped b_spline
- DOSBOX+MASM汇编环境的的安装与使用
- 对话模型,DialogBERT和DialogWAE优势何在?
- START 0.296.1 中文版 (腾讯官方云游戏平台)
- 日本NTT Yamamoto教授荣获2022年兰姆奖
- SD卡及其写保护功能
- 亳州市消防支队乡镇(街道)消防工作站综合管理平台案例
- linux设备usb节点和硬件接口,所谓设备驱动即驱使硬件设备行动,带你深入理解linux的设备驱动......