| 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) ;
}
 |