“第十二课--Microduino 光照指示器/zh”的版本间的差异
(Created page with "{| style="width: 800px;" |- | ==目的== 以前LED用来做指示,利用了其发光效应,今天我们实验其另外一个功能——光电效应,原理是LED发光...") |
(→设备) |
||
(未显示1个用户的8个中间版本) | |||
第1行: | 第1行: | ||
+ | {{Language|Lesson_12--Microduino_"Light_indicator" }} | ||
{| style="width: 800px;" | {| style="width: 800px;" | ||
|- | |- | ||
| | | | ||
==目的== | ==目的== | ||
− | + | 上节课讲到了光敏电阻实验,只把光线分为两个等级,强或弱,今天深入一下,做个光照指示器,用4个LED等指示,把光强分为5个等级,光敏电阻感受到的光越强,就点亮越多的LED来达到指示的目的。 | |
− | |||
==设备== | ==设备== | ||
− | *'''[[Microduino-Core]]''' | + | *'''[[Microduino-Core/zh]]''' |
− | *'''[[Microduino- | + | *'''[[Microduino-USBTTL/zh]]''' |
*其他硬件设备 | *其他硬件设备 | ||
− | **面包板跳线 | + | **面包板跳线 一盒 |
− | **面包板 | + | **面包板 一块 |
− | ** | + | **光敏电阻 一个 |
− | ** | + | **220欧 四个 |
− | ** | + | **10K 一个 |
− | ** | + | **led发光二级管 四个 |
− | ** | + | **USB数据连接线 一根 |
− | |||
− | |||
− | |||
− | + | [[File:lesson11All.jpg|600px|center|thumb]] | |
− | |||
− | |||
− | [[File: | ||
==原理图== | ==原理图== | ||
− | [[File: | + | [[File:第十二课原理图.jpg|600px|center|thumb]] |
− | + | 这次光敏电阻接法与上次相反,目的是想大家更加明白光敏电阻的用法。光敏电阻一端直接接电源,另一端通过电阻接地。初始状态下为低,随着光照强度的增加电压越来越高。 | |
==程序== | ==程序== | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | void setup() | + | void setup () |
− | { | + | { |
− | Serial.begin(115200); | + | Serial.begin(115200); |
+ | for(int i=2; i<=5;i++) //使用循环方式创建2-5号数字口为输出模式 | ||
+ | { | ||
+ | pinMode(i,OUTPUT); | ||
+ | } | ||
} | } | ||
− | void loop() | + | void loop () |
{ | { | ||
− | int n=analogRead(A0); | + | |
− | if(n> | + | int n =analogRead(A0); //读取光敏电阻的读数 |
− | { | + | //Serial.println(n); |
− | + | ||
− | + | if (n>=100) //各个颜色层级判断,各个层级数值,大家可根据自己的使用环境进行相应调整,最小0,最大1023 | |
− | + | { | |
+ | digitalWrite(2,HIGH); | ||
+ | digitalWrite(2,LOW);//当不再这个等级下,灯会熄灭 | ||
+ | } | ||
+ | if(n>250) | ||
+ | { | ||
+ | digitalWrite(3,HIGH); | ||
+ | digitalWrite(3,LOW); | ||
+ | } | ||
+ | if(n>400) | ||
+ | { | ||
+ | digitalWrite(4,HIGH); | ||
+ | digitalWrite(4,LOW); | ||
+ | } | ||
+ | if(n>550) | ||
+ | { | ||
+ | digitalWrite(5,HIGH); | ||
+ | digitalWrite(5,LOW); | ||
} | } | ||
− | + | // delay(100); | |
− | delay( | ||
} | } | ||
</source> | </source> | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==结果== | ==结果== | ||
− | + | 当光照很弱,低于设置的最小值时,所有灯都灭。随着光的增加,每到一个设定的级别就点亮一个LED,达到指示的效果。实际上LED灯一直在闪烁,因为为了使光强不在某一等级,要熄灭此等级的灯,就直接在点亮之后立即熄灭,在执行过程中没加延时,只要还在该等级,就循环处理,所以看起来就好像一直亮着。 | |
− | |||
|} | |} | ||
+ | |||
+ | [[File:lesson11Result.jpg|600px|center|thumb]] |
2014年10月29日 (三) 03:29的最新版本
Language | English |
---|
目的上节课讲到了光敏电阻实验,只把光线分为两个等级,强或弱,今天深入一下,做个光照指示器,用4个LED等指示,把光强分为5个等级,光敏电阻感受到的光越强,就点亮越多的LED来达到指示的目的。 设备
原理图这次光敏电阻接法与上次相反,目的是想大家更加明白光敏电阻的用法。光敏电阻一端直接接电源,另一端通过电阻接地。初始状态下为低,随着光照强度的增加电压越来越高。 程序void setup ()
{
Serial.begin(115200);
for(int i=2; i<=5;i++) //使用循环方式创建2-5号数字口为输出模式
{
pinMode(i,OUTPUT);
}
}
void loop ()
{
int n =analogRead(A0); //读取光敏电阻的读数
//Serial.println(n);
if (n>=100) //各个颜色层级判断,各个层级数值,大家可根据自己的使用环境进行相应调整,最小0,最大1023
{
digitalWrite(2,HIGH);
digitalWrite(2,LOW);//当不再这个等级下,灯会熄灭
}
if(n>250)
{
digitalWrite(3,HIGH);
digitalWrite(3,LOW);
}
if(n>400)
{
digitalWrite(4,HIGH);
digitalWrite(4,LOW);
}
if(n>550)
{
digitalWrite(5,HIGH);
digitalWrite(5,LOW);
}
// delay(100);
}
结果当光照很弱,低于设置的最小值时,所有灯都灭。随着光的增加,每到一个设定的级别就点亮一个LED,达到指示的效果。实际上LED灯一直在闪烁,因为为了使光强不在某一等级,要熄灭此等级的灯,就直接在点亮之后立即熄灭,在执行过程中没加延时,只要还在该等级,就循环处理,所以看起来就好像一直亮着。 |