项目场景:

通过树莓派连接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;
}

问题:

不太清楚电压和其值的关系;

产品说明采用模拟和数字,我们不确定哪一种更好。


解决方案:

通过实验给出了基本的线性规律。

树莓派实验中关于配置水位传感器的初步应用相关推荐

  1. 浏览器实验中的故障排除

    NewVoiceMedia 全球电信与服务经理Alfred Brooks 遇到了客户联络中心代理报告的严重降级音频的问题,本文将介绍他是如何一步步分析问题并最终确定错误是由Chrome实验中对AEC3 ...

  2. 树莓派3B入门 - 硬件配置

    树莓派3B入门 - 硬件配置 树莓派3B入门 - Linux镜像烧录lite32位版 前言 盖房子总是需要先选砖的,啊哈哈- 文章目录 树莓派3B入门 - 硬件配置 前言 1. 树莓派简介 1.1 树 ...

  3. 0.树莓派3上安装配置Archlinux

    为什么80%的码农都做不了架构师?>>>    本文永久地址:https://my.oschina.net/bysu/blog/1557801 1 下载: 下载(不得不吐槽,官网上的 ...

  4. CCNP路由实验---12、配置分发列表和被动接口

    一.实验拓扑图: 二.实验目的    1.在实验中应用到高级路由功能来操作路由更新,这些特性包括分发列表,默认路由,被动接口和路由重分布. 2.掌握高级路由特性来控制路由更新. 三.实验要求 1.公司 ...

  5. [Tesseract]Tesseract 在 Visual Studio 2012 中的配置及调用

    一.Tesseract简介 Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持 ...

  6. 浅析 .Net Core中Json配置的自动更新

    Pre 很早在看 Jesse 的Asp.net Core快速入门的课程的时候就了解到了在Asp .net core中,如果添加的Json配置被更改了,是支持自动重载配置的,作为一名有着严重" ...

  7. CCNP实验4-2:配置多区域和NBMA OSPF

    [实验目的]: 在本次实验中,你将在单个帧中继网络中配置OSPF. 在完成本次实验之后,你需要完成下列任务: <?xml:namespace prefix = o ns = "urn: ...

  8. BSCI实验之十三:配置点到点链路OSPF及认证

    实验拓扑: 实验要求:分别在RA/RB/RC(即图中的R1/R2/R3)上启用OSPF,注意观察它们的网络类型以及邻居关系,并观察认证后的特点. 实验目的:熟练进行点到点OSPF的基本配置和认证调试. ...

  9. Arcgis javascript那些事儿(二十)——dojo中djconfig配置、dojo与requirejs项目冲突

    一.引言 由于项目一部分使用requirejs另一部分地图是用dojo开发(因为arcgis javascript使用的dojo),两个要和到一起,所以要求研究下如何把两者和到一起,花了两天时间看了看 ...

最新文章

  1. 【活动】人工智能产学研生态建设研讨会报名
  2. 资源 | Yann LeCun最新演讲:大脑是如何高效学习的?(附PPT+视频)
  3. 编程之美——买书问题:贪心算法
  4. 认识FPGA触发器的亚稳态
  5. 【大数据】获取一篇新闻的全部信息
  6. python爬虫之路--准备环境
  7. Strace诊断CPU跑高问题(java/php网站)
  8. iis 无法启动计算机,win10系统iis无法启动的详细步骤
  9. 就想了解服务器为什么1M带宽网速却达不到1M
  10. 如何使用shared_preferences?
  11. vm虚拟机获取ip地址
  12. stream流的使用
  13. clamped b_spline
  14. DOSBOX+MASM汇编环境的的安装与使用
  15. 对话模型,DialogBERT和DialogWAE优势何在?
  16. START 0.296.1 中文版 (腾讯官方云游戏平台)
  17. 日本NTT Yamamoto教授荣获2022年兰姆奖
  18. SD卡及其写保护功能
  19. 亳州市消防支队乡镇(街道)消防工作站综合管理平台案例
  20. linux设备usb节点和硬件接口,所谓设备驱动即驱使硬件设备行动,带你深入理解linux的设备驱动......

热门文章

  1. 2011-07 《信息资源管理 02378》真卷解析,逐题解析+背诵技巧
  2. 游戏行业从业者过了30岁后都是如何发展的?游戏美术设计呢?
  3. SOAP Web服务
  4. 浅谈IT项目成熟度的评估
  5. python回调函数实例详解_python 简单的例子下详解回调函数
  6. 念数字 字符串操作系列2
  7. 机器人10大流行编程语言
  8. oracle oem 13c新特性,Oracle Database 12c - 新特性实现的历程与13c的预测
  9. 微信小程序使用 setInterval 制作计时器后台延迟问题
  10. 公排系统php,全球公排自动滑落二二复制多级分销系统 PHP源码