Arduino周边模块:传感器部件(温敏、光敏、湿敏)
Arduino的模数转换
对于Arduino来说,它只认识数字量,模拟量对其来说就是一门”外语”。
模拟量:时间与数值上均是连续的物理量。
数字量:时间与数值上均是离散的物理量。
而模数转换电路能够将模拟量转化为数字量。
模数转换原理:
- 时间上的离散——采样
每隔一定的时间,就对模拟量的大小进行采集。采样的频率越高,模数转换的效果也就越好。一般采样的频率要大于信号频率的两倍。
- 数值上的离散——量化与编码
例如:3位精度的模数转换器
Arduino中的模数转换器
Arduino模数转换库函数:
analogReference()
analogRead()
实例:
1.void setup()2.{3. Serial.begin(9600);//初始化串口的数值4.}5.void loop()6.{7. int sensorValue=analogRead(A0);8. Serial.println(sensorValue);//输出数值9. delay(500);//延时10.}
点击上传到Arduino之后,在Tools–>Serial Monitor中可查看传感器读取的数值
传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
传感器分类:热敏、光敏、声敏、气敏、化学、力敏、磁敏、湿敏、色敏、味敏
使用Arduino监控室内温度
热敏传感器(温度传感器):将温度信息转化为电信号的器件
一般使用LM35D
参数:
测温范围:0~100℃
测温精度:0.5℃
工作电压:4~30V
测温原理:将温度转换为等比例的电压输出
0℃时输出0V。温度每升高1℃,输出电压增加10mV
连接:
温度传感器与Arduino连接图
Arduino温度监控系统连接图
代码:
1.#include <LiquidCrystal.h>2.LiquidCrystal lcd(12,11,5,4,3,2);3.int SensorPin=A0;4.float getTemperature()5.{6. float voltage=analogRead(SensorPin)/1024.0*5;7. float temperature=voltage/0.01;8. return temperature;9.}10.11.void setup()12.{13. lcd.begin(16,2);//初始化LCD160214.}15.void loop()16.{17. lcd.clear();18. lcd.print("Temperature is");19. lcd.setCursor(0,1);20. lcd.print(getTemperature());21. delay(500);22.}
使用Arduino检测室内光线强弱
光敏传感器:光敏电阻是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。
光线强度测量电路
硬件连接
实现功能:当光线弱时LED点亮,当光线较强时LED熄灭
程序编写
1.void setup()2.{3. Serial.begin(9600);4.}5.void loop()6.{7. int sensorValue=analogRead(A0);8. Serial.println(sensorValue);9. delay(500);10.}
然后用手挡住光敏传感器,发现当手挡住光线时,读回来的值都大于950
1.int ledPin=6;2.void setup()3.{4. pinMode(ledPin,OUTPUT);5. Serial.begin(9600);6.}7.void loop()8.{9. int sensorValue=analogRead(A0);10. Serial.println(sensorValue);11. if(sensorValue>950)12. {13. digitalWrite(ledPin,HIGH);14. }else15. {16. digitalWrite(ledPin,LOW);17. }18. delay(500);19.}
使用Arduino检测湿度
湿度传感器:基片上覆盖一层用感湿材料制成的膜,当空气中的水蒸气吸附在感湿膜上时,元件的电阻率和电阻值都发生变化,利用这一特性即可测量湿度。
与光线传感器连接类似
程序:
1.void setup()2.{3. Serial.begin(9600);4.}5.void loop()6.{7. int sensorValue=analogRead(A0);8. Serial.println(sensorValue);9. delay(500);10.}
程序运行后读取数据都在1000以上,把传感器插入水中,其读数都是小于100的,因此我们要根据自己的需要调整湿度。此处取200.
1.led ledPin=6;2.void setup()3.{4. pinMode(ledPin,OUTPUT);5. Serial.begin(9600);6.}7.void loop()8.{9. int sensorValue=analogRead(A0);10. Serial.println(sensorValue);11. if(sensorValue>200)12. {13. digitalWrite(ledPin,HIGH);14. }15. delay(500);16. digitalWrite(ledPin,LOW);17.}
时间: 2024-10-19 23:11:54