Arduino可以轻松获取传感器值,这是它如此有用的特点之一。
传感器是一种将物理量(如光强或温度)转换为电量的设备。例如,热电偶输出的电压与它的温度成正比。有许多不同类型的传感器:
- 光传感器
- 运动传感器
- 温度传感器
- 磁场传感器
- 重力传感器
- 湿度传感器
- 湿敏元件
- 振动传感器
- 压力传感器
- 电场传感器
- 声音传感器
- 位置传感器
这些传感器被用于数千种不同的应用,包括制造、机械、航空航天、汽车、医药和机器人。
实验1:距离传感器
在本实验中,我们将使用锐利的GP2Y0A21YK接近传感器来控制LED的亮度。
硬件要求
- 1 x Arduino Mega2560
- 1 x电路试验板
- 1 x领导
- 5 ×跳线
- 1 × 470欧姆电阻器
- 1个锐利的GP2Y0A21YK接近传感器
接线图
这种锐利的近距离传感器可以探测到近10厘米和远80厘米的物体。它会发出红外线脉冲,然后检测出光线反射的角度。物体越远,输出电压越低。如果传感器没有接收到反射,则传感器的输出电压为0v。如果物体是10厘米或更近,输出电压将等于5V(在这个实验中,我们给传感器供电5V)。
传感器的输出连接到Arduino模拟输入。然后Arduino的模数转换器(ADC)将该值转换为0到1023之间的值。然后,这个值被映射到0到255之间的值,这个值被用来设置脉宽调制输出的占空比,控制LED的亮度。其结果是,物体离接近传感器越近,LED就会发出越亮的光。
实验1代码
const int pwm = 2;//初始化pwm引脚常量int adc = A0;//初始化adc void setup() {pinMode(pwm,OUTPUT);//改变LED亮度}void loop() {int sensor_val = analog (adc);sensor_val = map(sensor_val, 0, 1023, 0, 255);/* -----------map function ------------以上函数对adc的输出进行缩放,adc的输出为10位,输出值为0 ~ 1023,输出值为0 ~ 255,形成analogWrite函数,只接收这个范围内的值。* / analogWrite (pwm sensor_val);//设置传感器值为pwm}
Reading_Sensors_With_Arduino.zip
实验二:热传感器
在这个实验中,Arduino将测量温度使用一个LM35传感器IC。LM35是一个低电压IC,它需要一个电源从+4 VDC到+20 VDC。这是理想的,因为我们可以用Arduino的+ 5v输出为传感器供电。LM35只有3个引脚,2为电源和1为模拟输出。输出引脚提供模拟电压输出,与温度c成线性比例。输出范围为0 V - 1.5 V,单电源供电。输出0v对应于温度为0℃,温度每升高一度输出增加10mv。要将输出电压转换为温度,只需将输出电压(mV)除以10。例如输出值为315mv (0.315 V),则温度为31.5℃。
LM35 IC的引脚配置:
销的配置
硬件要求
- 1 x LM35温度传感器
- 2 x发光二极管
- 1 x火柴盒
- 2个470欧姆电阻
- 1 x Arduino Mega2560
- 1 x电路试验板
- 10 x跳线
接线图
实验2代码
LM35的输出引脚(引脚2)连接到Arduino的A0。该代码使用函数analogRead()将输出电压转换为0到1023之间的数字。将这个数字乘以0.48828125将该值转换为摄氏度,然后在串行监视器上显示:
const int adc = 0;//模拟输入端命名引脚0为adc常量int high = 8;//打开和关闭黄色LED const int low = 9;//打开和关闭绿色LED void setup() {Serial.begin(9600);//启动串口通讯,波特率为9600//声明LED引脚为输出} void loop() {int adc = analogRead(0);//读取模拟电压并将其存储在一个整数adc = adc * 0.48828125;//将读数转换为摄氏串行。打印("温度= ");//在串行监视器上显示串行.print(adc); //Temperature reading Serial.print("*C"); //TEMPRATURE = 27*C ETC Serial.println(); //To end the line delay(1000); //1 Sec delay /* LOGIC: if (temperature (adc) > 70 ° C ) turn on Yellow Leds turn off Green Leds else turn off Yellow Leds turn on Green Led */ if(adc>70) // This is the control statement { digitalWrite(high,HIGH) ; digitalWrite(low,LOW) ; } else { digitalWrite(high,LOW) ; digitalWrite(low,HIGH) ; }
Reading_Sensors_With_Arduino2.zip
视频
自己尝试一下这个项目吧!BOM。