|
|
发表于 2015-11-4 21:00:17
|
显示全部楼层
LED变色,分成三步:1.接好全彩LED。2.接好温度感应器。3.写条件使得变色。
第一步,全彩LED有4个接口从左到右分别是R,COM,G,B对应红,公共,绿色,蓝色。每个针脚可以输出0-255的数值,那需要模拟引脚PWM,也就是你可以接9,10,11等这些PWM接口(如果不是PWM接口只会输出0或者255的数值,理解为只能灭或者亮,没有中间的灰度)。
第二部,温度感应器,以LM35为例,有三个针脚,由左往右分别是VCC,Vout,GUN。对应电源,信号,地线。我们用A0口来获取电压数值。具体的接法以附件作参考。
第三部,编写代码。
int valTemp; //定义一个名为“valTemp”的变量
void setup() {
pinMode(9,OUTPUT); //定义引脚9为输出
pinMode(10,OUTPUT); //定义引脚10为输出
pinMode(11,OUTPUT); //定义引脚11为输出
}
void loop() {
valTemp=analogRead(A0); //获取模拟接口A0的值,这个值的范围是0-1023,并不是真正的温度数值
if(valTemp>400){ //引用"if"语句,条件判定,假如获取的值大于400
analogWrite(9,216); //那么引脚9(蓝色)输出216
analogWrite(10,83); //那么引脚10(绿色)输出83
analogWrite(11,192); //那么引脚11(红色)输出192
}
else //如果不满足以上的条件
{
analogWrite(9,23); //那么引脚9(蓝色)输出23
analogWrite(10,185); //那么引脚10(绿色)输出185
analogWrite(11,253); //那么引脚11(红色)输出253
}
}
//以上是为一个最基础的温度感应变色的代码,用了if语句,如果读取的数值大于400,就会
得到一个紫色,你可以在PS或者其他画图软件中得到颜色的RGB数值。如果数值小于或者等于
400就会得到一个橙色。
//当然,如果你不清楚究竟我们读取到的数值(valTemp)是多少的话,可以打开串口监听,那
首先在void setup() {的下面一行,加上
Serial.begin(9600); //这是设定串行波特率为9600
然后再在void loop() {的下面一行,加上
Serial.println(analogRead(A0)); //在串口检测中显示当前读到的A0口的数值
delay(500); //延时半秒,1000为1秒,主要是防止刷新过快 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|