|
Arduino开发板可以轻松获取各类传感器的值,这是其非常有用的功能之一。
传感器是将物理量(例如光强度或温度)转换为电信号的器件。例如,热电偶输出与其温度成比例的电压。有许多不同类型的传感器:
● 光照传感器(Light sensor) ● 运动传感器(Motion sensor) ● 温度感应器(Temperature sensor) ● 磁力传感器(Magnetic fields sensor) ● 重力传感器(Gravity sensor) ● 湿度传感器(Humidity sensor)
● 振动传感器(Vibration sensor) ● 压力传感器(Pressure sensor) ● 电场传感器(Electrical fields sensor) ● 声音传感器(Sound sensor) ● 位置传感器(Position sensor) 这些传感器用于数千种不同的应用,包括制造、机械、航空航天、汽车、医药和机器人。
实验1:距离传感器 在本实验中,我们将使用夏普GP2Y0A21YK接近传感器来控制LED的亮度。
需要的硬件 ● Arduino Mega2560开发板 ● 面包板 ● LED指示灯 ● 连接导线 ● 470欧姆电阻 ● Sharp GP2Y0A21YK接近传感器
接线图
夏普接近传感器可以检测最近10厘米、最远80厘米的物体。它发出红外光脉冲,然后检测光线反射的角度。物体越远,输出电压越低。如果传感器没有反射,则传感器的输出电压将为0 V。如果物体为10 cm或更近,输出电压将等于5 V.(在本实验中,我们向传感器提供5V电压。 )
传感器的输出连接到Arduino模拟输入。然后,Arduino的模数转换器(ADC)将该值转换为0到1023之间的值。然后将该值映射到0到255之间的值,该值用于设置脉冲的占空比 - 宽度调制输出,控制LED的亮度。结果是物体离接近传感器越近,LED就越亮。
实验代码1 - const int pwm = 2 ; //Initializing Pin for pwm
- const int adc = A0 ; //Initializing Pin for adc
- void setup()
- {
- pinMode(pwm,OUTPUT) ; // To change LED brightness
- }
- void loop()
- {
- int sensor_val = analogRead(adc) ;
- sensor_val = map(sensor_val, 0, 1023, 0, 255) ;
-
- /*
- -----------map funtion------------
- The above funtion scales the output of adc,which is
- 10 bit and gives values btw 0 to 1023, in values btw
- 0 to 255 form analogWrite funtion which only recieves
- values btw this range.
- */
-
- analogWrite(pwm,sensor_val) ; // setting sensor value as pwm
-
- }
复制代码
实验2:温度传感器 在这个实验中,Arduino将使用LM35传感器IC测量温度。 LM35是低压IC,需要+4 VDC至+20 VDC的电源。我们可以使用Arduino的+5 V输出为传感器供电。 LM35只有3个引脚,2个用于电源,1个用于模拟输出。输出引脚提供的模拟电压输出与摄氏温度成线性比例。当使用单电源供电时,输出范围为0 V - 1.5V。0V的输出对应于0℃的温度,并且对于温度的每度增加,输出增加10mV。要将输出电压转换为温度,只需将输出电压除以mV为10。例如,如果输出值等于315 mV(0.315 V),则温度为31.5°C。
LM35的引脚配置:
需要的硬件 ● LM35温度传感器 ● LED指示灯 ● 火柴盒 ● 470欧姆电阻器 ● Arduino Mega2560开发板 ● 面包板 ● 连接导线
接线图
实验代码2 LM35的输出引脚(引脚2)连接到Arduino的A0。该代码使用函数analogRead()将输出电压转换为0到1023之间的数字。将此数字乘以0.48828125将该值转换为C,然后显示在串口监视器上: - const int adc = 0 ; //naming pin 0 of analog input side as adc
- const int high = 8 ; // For turning on and off yellow LED
- const int low = 9 ; // For turning on and off Green LED
- void setup()
- {
- Serial.begin(9600) ; //Starting serial Communication at baud rate of 9600
- pinMode(high,OUTPUT); //declaring LED pins as OUTPUT
- pinMode(low,OUTPUT);
- }
- void loop()
- {
- int adc = analogRead(0) ; //reading analog voltage and storing it in an integer
- adc = adc * 0.48828125; //converting reading into Celsius
- Serial.print("TEMPRATURE = "); //to Display on serial monitor
- Serial.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) ;
- }
复制代码
|