Archive for August 2009
RGB Monome项目为全彩LED的控制留下了充足的空间,为了进一步实验TLC5940对RGB LED的控制,我们将TCL5940和RGB LED分别制作成了相应的模块,以方便类似RGB LED项目的开发。首先是RGB LED模块,这个小模块上提供有6颗RGB LED:
接着是TLC5940模块,它被设计成能够方便地与RGB LED模块通过连接线连接
可惜的是,这一版本的TLC5940模块在设计的时候参考的是Monome的设计,因而被设计成了共阴驱动的方式,但相应的转换电路又没有带上,所以实际上是一个设计不成功的电路。不过没有关系,我们只需要使用连接线将VCC与每个RGB LED模块的公共端连接起来就可以了,虽然乱点,但并不影响实验。
Arduino这端暂时就用原型板一个一个引脚连接了,虽然也能够做一个扩展板,但在原型验证阶段并不是那么必须。
所以硬件连接好之后,就可以下载软件进行实验了,基本实验使用的是tlc5940arduino这一库所提供的测试例子Fades,需要注意的是由于USB接口没有办法提供足够的电流,因些需要使用外接电源来给整个电路供电。下图是测试时的效果:
DS18B20是DALLAS公司推出的单线数字温度传感器,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内的精度为±0.5°C,由于其优越的性价比,因此在实际项目中被大量采用。同基于热敏电阻的温度传感器不同,使用数字温度传感器避免了复杂的换算,可以直接从传感中读出温度的数值。
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,这对硬件上并不支持单总线协议的单片机来讲可是一个不小的麻烦,因为只能采用软件的方法来模拟单总线的协议时序,从而完成对DS18B20芯片的访问。听起来有点复杂,好在Arduino上已经有了相应的实现,并封装好了相应的库来让我们直接读出DS18B20的数据。
我们提供了DS18B20的电子积木模块,以方便在Arduino上的使用:

连接上依然使用的是通用传感器连接线和Arduino专用传感器扩展板V4,此处我们将数字温度传感器连接到了数字I/O第12号引脚上了:

硬件准备好之后,首先下载相应的软件包,并将其解压缩到Arduino安装目录下的hardware\libraries目录下:
重新启动Arduino之后,就可以在代码中使用这一为DS18B20量身打造的库了,下面是我测试时所使用的代码:
#include <DallasTemperature.h> DallasTemperature tempSensor; void setup(void) { Serial.begin(9600); tempSensor.begin(12); // DS18B20接在数字I/O第12号引脚上 } void loop(void) { // 检查温度传感器是否正常工作 switch(tempSensor.isValid()) { case 1: Serial.println("Invalid CRC"); tempSensor.reset(); // 重置温度传感器 return; case 2: Serial.println("Not a valid device"); tempSensor.reset(); // 重置温度传感器 return; } // 从DS18B20读取温度值 Serial.print(tempSensor.getTemperature()); Serial.print("C"); Serial.println(); }
在将代码下载到Arduino中并运行起来之后,打开Arduino的串口监视工具,我们就可以看到从数字温度传感器DS18B20中读出来的温度值了:





