图2:TEMT6000光敏传感器与ArduinoUno的接线图
图3:TEMT6000和ArduinoUno之间的接线图
图4:Arduino显示传感器最大值的串口监视器
光敏传感器的代码:
第2步:添加距离传感器
GP2Y0A21YK将被安置在食物容器上方,在开启自动喂食功能前,需要先测量瓶子里的剩余空间(即食物的多少)。有了这个距离传感器,系统将检测食物容器(或瓶子)是满的还是空的。具体工作方式如下:
距离较小:自动系统只会增加一小部分食物;
中等距离:您的宠物将获得一半食物;
距离较大:自动系统将投喂全部食物。
这里的距离表示从安装距离传感器的位置到食品容器底部的距离。由于传感器的量程为10-80cm,所以传感器需要在食品容器顶部以上10cm处才能读取正确的距离值。
如何确定传感器的最佳拟合线:
摘自Pololu.com
传感器的输出电压与测量距离的倒数之间的关系在传感器的可用范围内近似线性。您可以使用此图将传感器输出电压转换为一个近似的距离,方法是创建一条最佳拟合线,将输出电压(V)的倒数与距离(cm)联系起来。线性化方程的最简形式可以表述为到反射物体的距离约等于一个常数尺度因子(~27v*cm)除以传感器的输出电压之后的数值。因此增加一个恒定的距离偏移量并修改缩放因子可以改善这条线的拟合。
图5:距离传感器的特性/Pololu.com
摘自Phidgets.com
基于夏普的“典型值”,将传感器值转换为距离的公式(公式仅适用于传感器值在80–500之间)为:
距离(cm)=4800/(传感器值–20)
这种传感器可以找到离物体的距离,这些物体呈现出非常窄的边缘,比如角度非常尖锐的墙壁。
注:该传感器的输出因单元而异,并取决于目标的特性(反射率、尺寸、运动方向、目标对准)。
图6:夏普GP2Y0A21YK与Uno之间的接线图
图7:夏普距离传感器、TEMT6000、Uno之间的接线图
代码:
intlightSensor=0;intdistanceSensor=1;voidsetup(){Serial.begin(9600);}voidloop(){intvalueFromLightSensor=analogRead(lightSensor);Serial.print("LightValue=");Serial.print(valueFromLightSensor);Serial.println("");Serial.print("DistanceValue=");intvalueFromDistanceSensor=analogRead(distanceSensor);intdistance=4800/(valueFromDistanceSensor-20);Serial.print(distance);delay(1000);}
这是一个实用模块,即使在系统关闭时,上面所配备的电池也能保证系统工作的连续性。
图8:RTC模块接线图
图9:RTC、夏普距离传感器、TEMT6000、Uno之间的接线图
为了获得最佳的使用效果,需要为模块添加两个库。
DS1307RTC
连接线(这个库已经包含在ArduinoIDE中,因此添加起来很容易)
#include#include#includeintlightSensor=0;intdistanceSensor=1;voidsetup(){Serial.begin(9600);setSyncProvider(RTC.get);}voidloop(){intvalueFromLightSensor=analogRead(lightSensor);Serial.print("LightValue=");Serial.print(valueFromLightSensor);Serial.println("");Serial.print("DistanceValue=");intvalueFromDistanceSensor=analogRead(distanceSensor);intdistance=4800/(valueFromDistanceSensor-20);Serial.println(distance);Serial.print("Hour=");Serial.println(hour());delay(1000);}
图12:所显示的小时
继续阅读>
TiberiaTodeila
浏览量
下载发烧友APP
电子发烧友观察
长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)