目录
- 常用传感器讲解九--雨滴传感器
- 常用传感器讲解十--光传感器根据亮度安排灯
- [常用传感器讲解七--light cup(KY-008)](#常用传感器讲解七--light cup(KY-008))
- 常用传感器讲解十二--倾斜开关传感器(KY-020)
常用传感器讲解九--雨滴传感器
具体讲解
雨滴传感器基本上是一块板,上面以线形形式涂覆镍。它基于抵抗原理。雨水传感器模块允许通过模拟输出引脚测量湿度,当湿度阈值超过时,它可以提供数字输出。
该模块基于LM393运算放大器。它包括电子模块和"收集"雨滴的印刷电路板。当雨滴积聚在电路板上时,它们会形成并联电阻路径,该路径可通过运算放大器进行测量。
传感器是一个电阻偶极子,在潮湿时显示较小的电阻,而在干燥时显示较大的电阻。当船上没有雨滴时,它会增加电阻,因此我们根据V = IR获得高电压。
当出现雨滴时,它会降低电阻,因为水是电的导体,并且水的存在使镍线并联连接,因此降低了电阻并降低了其两端的电压降。
电路连接
代码实现
javascript
const int buzzer=7;
int i;
void setup() {
pinMode(buzzer,OUTPUT);
pinMode(2,INPUT);
}
void loop() {
if(digitalRead(2)==1)
{
digitalWrite(buzzer,HIGH);
}
else
{
digitalWrite(buzzer,LOW);
}
}
常用传感器讲解十--光传感器根据亮度安排灯
具体讲解
接线
我有一个光敏电阻连接到模拟引脚0(任何模拟引脚都可以工作)和面包板右侧的5V电压。它通过接地的1K欧姆电阻器运行。我将面包板另一侧的LED(任何颜色)连接到数字引脚13(任何数字引脚都可以工作)和接地的220欧姆电阻(100欧姆也可以工作)。在第一个LED的右侧,通过不同的数字引脚,以相同的方式为不同颜色的LED接线。
这个怎么运作
如果光敏电阻读取的值大于450,则显示"It is quite light!"。在串行监视器上,然后关闭所有LED,如下所示:
if(light > 450) { // If it is bright...
Serial.println("It is quite light!");
digitalWrite(13,LOW); //turn left LED off
digitalWrite(12,LOW); // turn right LED off
}
如果读取的值介于230到450之间,则会打印"It is average light!"。在串行监视器上,并打开左侧的LED,如下所示:
else if(light > 229 && light < 451) { // If it is average light...
Serial.println("It is average light!");
digitalWrite(13, HIGH); // turn left LED on
digitalWrite(12,LOW); // turn right LED off
}
这仅使我们得到低于230的值。如果该值小于230,则打印"It is quite dark!"。在串行监视器上,并打开两个LED,如下所示:
else { // If it's dark...
Serial.println("It is pretty dark!");
digitalWrite(13,HIGH); // Turn left LED on
digitalWrite(12,HIGH); // Turn right LED on
}
我在循环末尾添加了1000的延迟,以防止信息超载到串行监视器中,如下所示:
delay(1000); // don't spam the computer!
电路连接
代码实现
javascript
int light = 0; // store the current light value
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); //configure serial to talk to computer
pinMode(13, OUTPUT); // configure digital pin 13 as an output
pinMode(12, OUTPUT); // configure digital pin 12 as an output
}
void loop() {
// put your main code here, to run repeatedly:
light = analogRead(A0); // read and save value from PR
Serial.println(light); // print current light value
if(light > 450) { // If it is bright...
Serial.println("It is quite light!");
digitalWrite(13,LOW); //turn left LED off
digitalWrite(12,LOW); // turn right LED off
}
else if(light > 229 && light < 451) { // If it is average light...
Serial.println("It is average light!");
digitalWrite(13, HIGH); // turn left LED on
digitalWrite(12,LOW); // turn right LED off
}
else { // If it's dark...
Serial.println("It is pretty dark!");
digitalWrite(13,HIGH); // Turn left LED on
digitalWrite(12,HIGH); // Turn right LED on
}
delay(1000); // don't spam the computer!
}
常用传感器讲解七--light cup(KY-008)
具体讲解
KY-027魔术灯杯模块是一组两块板,每块板都有一个led和一个水银倾斜开关。使用PWM驱动每个模块上的LED,可以实现倾斜时将光从一个模块"神奇地"传递到另一个模块的效果。
KY-027是一对模块,每个模块由水银开关,LED和10kΩ电阻组成。每个板都有一个引脚来控制开关,LED,电源和地
电路连接
使用下图连接每个模块。
KY-027(A) Arduino的
G 地线
- 5伏
小号 8
大号 9
KY-027(B) Arduino的
G 地线 - 5伏
小号 7
大号 6
代码实现
在这个Arduino草图中,我们将使用两个KY-027模块来创建魔术灯杯效果。每个模块中的水银开关提供一个数字信号,该信号用于使用PWM来调节LED的亮度。倾斜模块会降低一个模块的亮度,同时增加另一个模块的亮度,从而产生幻觉地从一个模块传递到另一个模块的光幻觉。
javascript
int ledPinA = 9;
int switchPinA = 8;
int switchStateA = 0;
int ledPinB = 6;
int switchPinB = 7;
int switchStateB = 0;
int brightness = 0;
void setup()
{
pinMode(ledPinA, OUTPUT);
pinMode(ledPinB, OUTPUT);
pinMode(switchPinA, INPUT);
pinMode(switchPinB, INPUT);
}
void loop()
{
switchStateA = digitalRead(switchPinA);
if (switchStateA == HIGH && brightness != 255)
{
brightness ++;
}
switchStateB = digitalRead(switchPinB);
if (switchStateB == HIGH && brightness != 0)
{
brightness --;
}
analogWrite(ledPinA, brightness); // A slow fade out
analogWrite(ledPinB, 255 - brightness); // B slow bright up
delay(20);
}
常用传感器讲解十二--倾斜开关传感器(KY-020)
具体讲解
KY-020 倾斜开关传感器模块。当电路向侧面倾斜时,只要以足够的力和倾斜度移动电路,即可激活内部的球开关,从而使电路闭合
KY-020由一个10kΩ电阻器和一个具有双向导电性的金属球开关组成,该开关根据倾斜程度来打开/关闭电路。它不测量倾斜角。
电路连接
将模块的电源线(中间)和地线(-)分别连接到+5和GND。将信号(S)连接到Arduino的引脚2。
KY-020 Arduino的
小号 2个
中间 +5伏
-- 地线
代码实现
当模块检测到倾斜度变化时,以下草图将打开Arduino引脚13上的LED。倾斜KY-020以打开/关闭LED。
javascript
int tiltPin = 2; // pin number for tilt switch signal
int ledPin = 13; // pin number of LED
int tiltState = 0; // variable for reading the tilt switch status
void setup() {
pinMode(ledPin, OUTPUT); // set the LED pin as output
pinMode(tiltPin, INPUT); // set the tilt switch pin as input
}
void loop(){
// get the tilt switch state
tiltState = digitalRead(tiltPin);
// check if tilt switch is tilted.
if (tiltState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}