Arduino传感器认识与应用1、按钮开关信号线S5VGND开关例程•按键开关模块和数字13接口自带LED搭建简单电路,制作按键提示灯•利用数字13接口自带的LED,将按键开关传感器接入数字3接口,当按键开关传感器感测到有按键信号时,LED亮,反之则灭.•intLed=13;//定义LED接口•intbuttonpin=3;//定义按键开关传感器接口•intval;//定义数字变量val•voidsetup()•{•pinMode(Led,OUTPUT);//定义LED为输出接口•pinMode(buttonpin,INPUT);//定义按键开关传感器为输入接口•}•voidloop()•{•val=digitalRead(buttonpin);//将数字接口3的值读取赋给val•if(val==HIGH)//当按键开关传感器检测有信号时,LED闪烁•{•digitalWrite(Led,HIGH)•}•else•{•digitalWrite(Led,LOW)•}•}2、无源蜂鸣器蜂鸣器的作用蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。这里的“源”不是指电源。而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。实验原理•使用数字I/O口,通过高低电平的变换,来实现方波。第一个例子是持续1毫秒的低电平,和1毫秒的高电平,实现一个500HZ的方波信号,持续80个方波,然后切换为持续2毫秒的低电平,和2毫秒的高电平,实现一个250HZ的方波信号.持续100个方波。两种声音交替发出。intbuzzer=8;//设置控制蜂鸣器的数字IO脚voidsetup(){pinMode(buzzer,OUTPUT);//设置数字IO脚模式,OUTPUT为输出}voidloop(){unsignedchari,j;//定义变量for(i=0;i80;i++)//辒出一个频率的声音{digitalWrite(buzzer,HIGH);//发声音delay(1);//延时1msdigitalWrite(buzzer,LOW);//不发声音delay(1);//延时ms}for(i=0;i100;i++)//输出出另一个频率的声音{digitalWrite(buzzer,HIGH);//发声音delay(2);//延时2msdigitalWrite(buzzer,LOW);//不发声音delay(2);//延时2ms}}•intbuzzer=8;//设置控制蜂鸣器的数字IO脚•voidsetup()•{pinMode(buzzer,OUTPUT);//设置数字IO脚模式,OUTPUT为辒出•}•voidloop()•{unsignedchari,j;//定义变量•for(i=0;i100;i++)//输出一个频率的声音•{digitalWrite(buzzer,HIGH);//发声音•delayMicroseconds(40);//延时40微秒•digitalWrite(buzzer,LOW);//不发声音•delayMicroseconds(40);//延时40微秒•}•for(i=0;i250;i++)//辒出另一个频率癿声音•{digitalWrite(buzzer,HIGH);//发声音•delayMicroseconds(120);//延时120微秒•digitalWrite(buzzer,LOW);//不发声音•delayMicroseconds(120);//延时120微秒•}•}3、有源蜂鸣器•有源蜂鸣器内部带震荡源,所以只要一通电就会叫,只能发出固定频率的声音。调错顺序,这个才是信号接地•intspeakerPin=8;//控制喇叭的引脚•intvalue=10;//控制喇叭响的时间,可自行更改•voidsetup()•{•pinMode(speakerPin,OUTPUT);•}•voidloop()•{digitalWrite(speakerPin,HIGH);•delay(value);//调节喇叭响的时间;digitalWrite(speakerPin,LOW);•delay(value);//调节喇叭不响的时间;•}•4、激光传感器•激光传感器通过S端来开启,可以发射持续的激光,也可以发射脉冲波。可用于玩具激光枪,或者激光测距等各种用途。实例程序•voidsetup()•{•pinMode(13,OUTPUT);//定义13脚为数字输出接口•}•voidloop(){•digitalWrite(13,HIGH);//打开激光头•delay(1000);//延时一秒•digitalWrite(13,LOW);//关闭激光头•delay(1000);//延时一秒•}5、光敏传感器•光敏传感器实质是一个光敏电阻,根据光的照射强度会改变其自身的阻值。编程原理•将光敏电阻的S端接在一个模拟输入口,光强的变化会改变阻值,从而改变S端的输出电压。将S端的电压读出,使用串口输出到计算机显示结果。•因为AVR是10位的采样精度,输出值从0~1023.当光照强烈的时候,值减小,光照减弱的时候,值增加。完全遮挡光线,值最大。•intsensorPin=2;•intvalue=0;•voidsetup()•{•Serial.begin(9600);//串口波特率为9600•}•voidloop()•{•value=analogRead(sensorPin);//读取模拟2端口Serial.println(value,DEC);//十进制数显示结果并且换行•delay(50);//延时50毫秒•}6、倾斜开关•用于检测较小的倾斜角度编程原理•倾斜开关模块和数字13接口自带LED搭建简单电路,制作倾斜提示灯。利用数字13接口自带的LED,将倾斜开关传感器接入数字3接口,当倾斜开关传感器感测到有倾斜信号时,LED亮,反之则灭。•intLed=13;//定义LED接口intbuttonpin=3;//定义倾斜开关传感器接口•intval;//定义数字变量val•voidsetup()•{•pinMode(Led,OUTPUT);//定义LED为输出接口•pinMode(buttonpin,INPUT);//定义倾斜开关传感器为输出接口•}•voidloop()•{•val=digitalRead(buttonpin);//将数字接口3的值读取赋给val•if(val==HIGH)//当倾斜开关传感器检测有信号时,LED亮•{•digitalWrite(Led,HIGH);•}•else•{•digitalWrite(Led,LOW);•}•}7、水银开关传感器•用于检测稍微大的角度,可以用于检测跌倒等。程序和上个例程通用•intLed=13;//定义LED接口intbuttonpin=3;//定义倾斜开关传感器接口•intval;//定义数字变量val•voidsetup()•{•pinMode(Led,OUTPUT);//定义LED为输出接口•pinMode(buttonpin,INPUT);//定义倾斜开关传感器为输出接口•}•voidloop()•{•val=digitalRead(buttonpin);//将数字接口3的值读取赋给val•if(val==HIGH)//当倾斜开关传感器检测有信号时,LED闪烁•{•digitalWrite(Led,HIGH);•}•else•{•digitalWrite(Led,LOW);•}•}8、魔术光杯(一对)•水银开关多加了一个独立的LED,两个可以组成魔术光杯LED控制信号原理•将魔术光杯其中一个模块S脚接数字脚7,LED控制接数字脚5(PWM功能),另一个模块S脚接数字脚4,LED控制接数字脚6.•现象:当一个水银开关倾倒时,自己的灯会越来越暗,另一个灯会越来越亮,像心电感应一样。•intLedPinA=5;•intLedPinB=6;•intButtonPinA=7;•intButtonPinB=4;•intbuttonStateA=0;•intbuttonStateB=0;•intbrightness=0;•voidsetup()•{•pinMode(LedPinA,OUTPUT);•pinMode(LedPinB,OUTPUT);•pinMode(ButtonPinA,INPUT);•pinMode(ButtonPinB,INPUT);•}•voidloop()•{•buttonStateA=digitalRead(ButtonPinA);//读取A模块•if(buttonStateA==HIGH&&brightness!=255)•{//当A模块检测到信号,且亮度不是最大时,亮度值增加•brightness++;•}•buttonStateB=digitalRead(ButtonPinB);•if(buttonStateB==HIGH&&brightness!=0)•{//当B模块检测到信号,且亮度不是最小时,亮度值减小•brightness--;•}•analogWrite(LedPinA,brightness);//A慢漸暗•analogWrite(LedPinB,255-brightness);//B慢漸亮•delay(25);•}•//两者相加的和为255,亮度此消彼涨的关系9、震动开关编程原理•震动模块和数字13接口自带LED搭建简单电路,制作震动闪光器。•利用数字13接口自带的LED,将震动传感器接入数字3接口,当震动传感器感测到有震动信号时,LED闪烁发光。•intLed=13;//定义LED接口•intShock=3//定义震动传感器接口•intval;//定义数字变量val•voidsetup()•{•pinMode(Led,OUTPUT);//定义LED为输出接口•pinMode(Shock,INPUT);//定义震动传感器为输出接口•}•voidloop()•{•val=digitalRead(Shock);//将数字接口3的值读取赋给val•if(val==HIGH)//当震动传感器检测有信号时,LED闪烁•{•digitalWrite(Led,LOW);•}•else•{•digitalWrite(Led,HIGH);•}•}10、敲击传感器和振动开关类似,只是能感受较小振幅的振动,更灵敏一些。余震的时间能维持稍微久一点点,代码可以兼容振动开关•intLed=13;//定义LED接口•intShock=3//定义震动传感器接口•intval;//定义数字变量val•voidsetup()•{•pinMode(Led,OUTPUT);//定义LED为输出接口•pinMode(Shock,INPUT);//定义震动传感器为输出接口•}•voidloop()•{•val=digitalRead(Shock);//将数字接口3的值读取赋给val•if(val==HIGH)//当震动传感器检测有信号时,LED闪烁•{•digitalWrite(Led,LOW);•}•else•{•digitalWrite(Led,HIGH);•}•}11、双色共阴LED模块•发光颜色:绿色+红色(左边头大一点的)黄+红(右边头小一点的)•产品广泛应用于电子词典、PDA、MP3、耳机、数码相机、VCD、DVD、汽车音响、通讯、计算机、充电器、功放、仪器仪表、礼品、电子玩具及移动电话等诸多领域。编程原理•通过模拟端口控制LED的亮度,0~255表示从0V到5V。2种颜色的灯混合,让其值总和为255,可以看到,从红色过渡到绿色的现象,中间颜色是混合成的黄色。•intredpin=11;//选择红灯引脚•intgreenpin=10;//选择绿灯引脚•intval