有关光照模块的具体问题及解决方案

有关光照模块的具体问题及解决方案 

问题1:串口助手无法打印出数据

分析问题:串口未接通,或许是缺少了什么必要的东西,找串口相关知识,

解决过程:重新定义光照模块引脚,更改数据处理的位置(采集数据就直接处理),直接在mread()函数内完成对对数据的处理,并进行测试;

解决方法:Use MicroLIB未被选中,是KEIL自带的一个简易的库,使用printf的时候重映像使用;选中后,使用printf函数时,就会从串口1输出字符串,直接默认定向到串口1,在串口助手上打印出来1;

结   果:可以打印数据,产生问题2;

 

问题2:数据接收不稳定,时好时坏

分析问题:接触不良,包括USB与电脑,杜邦线与芯片上的排针,模块与芯片之间的杜邦线连接,都会导致数据传输不稳定的情况;

采取措施:使用万用表测量模块vcc与gnd两端电压,与数据手册相对应(光照模块正常工作的额定电压范围);使用标有二极管的那个档位检查模块线路的通断情况,模块与32                芯片的连接情况,得出的结果是,模块与32板子的接触不良,不稳定;使用万用表电压档位,测量模块工作电压,在额定值范围内;,二极管图标档位检测线路,断断                  续续,不稳定;(线路接通则响,断路则不响)

 

 

解决方法:更换下载器与电脑的接口,更换杜邦线,使各个接线点接触良好,排除线路连接问题;

结    果:打印数据稳定,产生问题三。

 

问题3:数据打印,但一直打印同一组数据

可能原因:1>可以打印出东西来,说明串口到电脑是相通的,排除串口的问题;2>一直回显变量的初始值0,可能是模块采集的数据没有传到串口中,打印之前变量未被重新赋值;

解决过程:使用示波器采集sda与scl端口的波形,未采集到任何波形,说明光照模块与单32单片机之间没有数据的传输;

左图为引脚初始化后,右图为引脚未初始前;

解决办法:检查代码,发现是引脚未被初始化,导致光照模块采集的数据发送不出去,导致这个问题的产生,将引脚初始化加进去之后再次用示波器检测,得到两次不同的结果,如上图:

结     果:运行结果如下,产生问题4;

 

 

问题4:数据一直是一个特殊值65535(2^16-1)

可能原因:写测量指令与读测量结果都是由IIC接口完成,查阅IIC资料得,模块从地址不对应时会通过IIC传输数据的初始值0xFFFF,即65535;指令下达的不正确会产生类似的问题,包括 IIC从属地址与命令,(可以再数据手册中找到对应的功能代码及指令);

解决过程:从最终打印的变量一步一步往回倒推,找到最初的变量将其打印出来,是符号?  F  B,(无符号字符型数据);

一步一步打印出数据,查看是哪一部出路问题;

解决办法:根据数据手册所描述,ADDR接GND时从属地址为0x46,接vcc端时从属地为0xA8;根据数据手册所提供的信息将其修改过来;

结     果:得到的数值是固定值,数值没有实时更新;


问题5:数值不实时更新,如上图

可能原因:数值未被实时赋值,打印出来的数据没变化一直没有更改;

解决过程:认为是延时的问题,延时太短数据来不及重新赋值;

更改延时函数,使用Systick普通计数模式控制延时,这样比之前的while(i--)循环延时要精确一些,增加延时间隙,让变量能够被实时赋值;

改变延时并未达到理想的效果;

解决方法:mread()函数里面,划红线部分是对数据dis_data进行处理赋值给date[0],没有再对其进行改变,之后通过串口打印date[0],造成上述结果;

将date [0]更改为date[i],i与for循环中的i一致,取得三次数据的平均值后,打印出date[0];date[i]随着for循环i的增加而实时变换,就达到了数据实时变换的供能;

 

得到最终结果:

改变外界环境(用手电筒补光,或拿东西盖住光照传感器),使得数据有变换,模块调通,还缺一个步骤,需要一个转换公式,采集数据总结规律,将公式写进代码之中,就可以得到想要的结果;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用32单片机控制多个传感器并通过oled显示屏进行显示可能会遇到以下几个问题: 1. 硬件连接问题:连接电路不正确或者传感器与单片机通信的接口出现错误,导致传感器数据无法正确读取,无法正常显示数据。解决方法:检查电路连接是否正确,使用合适的通信协议进行通信,如IIC或SPI。 2. 数据处理问题:由于传感器采集数据的方式和数据类型不同,导致数据无法直接通过oled显示屏进行展示。解决方法:需要对传感器采集的原始数据进行处理,然后再将处理后的数据显示在oled屏幕上。 3. 显示问题:oled显示屏可能存在亮度、清晰度等方面的问题,导致数据无法正常显示。解决方法:调整oled显示屏的亮度和对比度,保证数据可以清晰显示。 4. 传感器干扰问题:当多个传感器连接在同一个单片机上时,可能会存在干扰问题,导致数据的不准确性和稳定性。解决方法:使用合适的隔离电路,避免传感器之间的干扰,确保数据的准确性。 总之,在使用32单片机、oled显示屏进行传感器控制和数据显示时,需要注意硬件连接、数据处理、显示、干扰等方面的问题,以确保传感器数据的准确性和展示效果的良好性。 ### 回答2: 使用32单片机和OLED显示屏显示温度、湿度、光照、雨滴四个模块,可能遇到以下问题: 1. 传感器连接问题:各传感器需要正确连接到单片机,确保传感器信号正确传递。如果连接出现问题,可能导致读取的数据不准确,或者干脆没有数据显示。 2. 数据转换问题:不同传感器输出的数据格式有可能不同,需要将其转换成单片机可以读取和处理的格式。如果转换出错,数据读取就会出现问题。 3. 噪声问题:传感器受到其他电路或者电磁干扰,可能会发生数据噪声,导致读取的数据不准确或者不稳定。需要在电路设计中注意减小噪声干扰。 4. 显示屏驱动问题:OLED显示屏需要按照一定的协议来驱动,需要为其编特定的代码。如果代码出错,可能导致显示出现问题,或者干脆不能正常显示数据。 5. 电源稳定性问题:传感器和显示屏需要稳定的电源供应,电源波动会影响读取和显示的准确性。需要注意电路中较大的电容和稳压器来提高稳定性。 6. 数据处理和算法问题:如果需要进行数据处理和算法计算,需要编相应的代码。这部分内容较为复杂,需要对数学和编程有较深入的了解。 总的来说,使用32单片机和OLED显示屏进行数据读取和显示,需要注意各传感器连接、数据转换、噪声、电源稳定性、显示屏驱动、数据处理和算法等问题,最终才能得到准确的数据显示。 ### 回答3: 使用32单片机和oled显示屏显示温度、湿度、光照和雨滴等模块时,可能会遇到以下几个问题: 1. 传感器的精度问题:不同的传感器精度不同,可能会导致数据的误差。因此需要选择高精度的传感器,并进行校准。 2. 数据的正确采集问题:温度、湿度、光照、雨滴等模块数据采集的方式不同,可能需要不同的采集方法。同时也需要考虑是否需要滤波或信号处理等操作。 3. 数据的显示问题:使用oled显示屏进行数据显示时,需要考虑显示界面和数据格式等问题,同时也需要进行相应的程序设计。 4. 数据的处理问题:不同的应用可能需要对数据进行处理,如数据的存储、分析、传输等。在使用32单片机和oled显示屏进行数据处理时,需要考虑算法的选择及程序的优化等问题。 总之,在使用32单片机和oled显示屏进行温度、湿度、光照和雨滴等模块的数据采集和显示时,需要综合考虑传感器的精度、数据采集和处理、显示界面设计等多个方面的问题,才能确保数据的正确性和显示效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值