极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14576|回复: 4

如何通过温度传感器使led灯变色

[复制链接]
发表于 2015-11-4 09:25:51 | 显示全部楼层 |阅读模式
新手小白,如何通过温度传感器使led灯变色?查看了论坛资料,只找到了温度传感器控制数字变化的。。。。希望有大神愿意解答。。先谢过。{:soso_e178:}
回复

使用道具 举报

发表于 2015-11-4 09:36:38 | 显示全部楼层
温度到达几度亮什么灯 温度到达几度亮什么灯
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-4 09:53:46 | 显示全部楼层
gthrtg 发表于 2015-11-4 09:36
温度到达几度亮什么灯 温度到达几度亮什么灯

不会编代码求教
回复 支持 反对

使用道具 举报

发表于 2015-11-4 19:22:57 | 显示全部楼层
你要再说清楚一点你目标是什么,手上有什么
回复 支持 反对

使用道具 举报

发表于 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
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 17:40 , Processed in 0.038619 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表