功能:使用温度传感器采集温度,用2位数码管显示结果。
材料如下:
1 arduino Uno
2 DS18B20 温度传感器
3 2位数码管
数码管相关:
数码管的原理很简单,一般一个字符由7段组成,由a-g,需要控制每段的电压高低来是否亮,比如0则应该abcdef亮,中间的g暗。所以,数码管的接入关键是看针脚的定义。
对于n位数码管,一般是共阳或共阴,针脚的具体定义需要看相应的参数图,不要自己猜测。一般会有n位针脚对应各自的字符开关。一般针脚的序列是从左下角逆时针 1...n。
在自己程序里需要定义数码管的针脚对应板子上的io口,比如我这里:
Arduino引脚 数码管引脚
D11 10(A)
D10 9(B)
D2 1(C)
D3 4(D)
D4 3(E)
D5 6(F)
D6 5(G)
D7 2(DP)
D8 8(LED1)
D9 7(LED2)
右边针脚数字顺序即图里下部所示a-dp对应的顺序。
可以参考:
http://blog.sina.com.cn/s/blog_a6164cc90101a6ks.html
http://www.arduino.cn/thread-1224-1-1.html
相关资料和软件可以在附件中找到。
温度相关:
用的是DS18B20 温度传感器,注意不同型号的温度传感器对应的库和方法不一样,需要针对性开发。这里有篇很好的文章:
http://bbs.iqrobot.com/forum.php?mod=viewthread&tid=45。
相关的内容可见
http://www.pjrc.com/teensy/td_libs_OneWire.html和
http://www.milesburton.com/?title=Dallas_Temperature_Control_Library
需要的库也可从附件下载,解压缩放到arduino的libraries目录下。(一般需要重启arduino IDE才可生效)
我的测试代码:
#include <OneWire.h>
#include <DallasTemperature.h>
//LED
#define SEL_LED1 8 //arduino数字针脚8对应LED1的控制
#define SEL_LED2 9 //arduino数字针脚9对应LED1的控制
const unsigned char LED8Pin[]={
11,10,2,3,4,5,6,7,8,9};//A B C D E F G Dp sel_led
const unsigned char LED8Code[]={ //该值可以通过取模软件获得,共阳
0xC0, // 0
0xF9, // 1
0xA4, // 2
0xB0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xF8, // 7
0x80, // 8
0x90, // 9
0x88, // A
0x83, // B
0xC6, // C
0xA1, // D
0x86, // E
0x8E // F
};
// Data wire is plugged into port 10 on the Arduino
#define ONE_WIRE_BUS 13
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
//LED
char i;
for(i=0;i<10;i++)
{
pinMode(LED8Pin[i], OUTPUT);
digitalWrite(LED8Pin[i], HIGH);
}
// Start up the library
sensors.begin();
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
Serial.print("Temperature for the device 1 (index 0) is: ");
float tempValue = sensors.getTempCByIndex(0);
int changeValue = getRightValue(tempValue);
Serial.print(tempValue);
Serial.print(" ");
Serial.println(changeValue);
for(int i=0;i<20;i++){
LEDAll_Show(changeValue);
}
//delay(1000);
}
int getRightValue(float f){
float intValue = f*100;
int small = (int)intValue%100;
int diff = (small>=50? 1:0);
return diff+intValue/100;
}
void LED8Show(char data){
char i;
char j;
char hc;
if(0<=data<16)
{
hc = LED8Code[data];
for(i=0;i<8;i++)
{
j = bitRead(hc,i);
digitalWrite(LED8Pin[i], j);
if(j==0){
//digitalWrite(LED8Pin[i], LOW);
}
}
}
}
void LEDAll_Show(unsigned char num)
{
unsigned char VH,VL;
VH = num/10;
VL = num%10;
//Serial.println(num);
digitalWrite(SEL_LED1, 1);
digitalWrite(SEL_LED2, 0);
LED8Show(VH);
delay(10);
digitalWrite(SEL_LED1, 0);
digitalWrite(SEL_LED2, 1);
LED8Show(VL);
delay(10);
digitalWrite(SEL_LED1, 0);
digitalWrite(SEL_LED2, 0);
}
布线和结果请看附件效果图。
- 大小: 2.6 MB
- 大小: 30.1 KB
- 大小: 8.1 KB
- 大小: 4.8 KB
分享到:
相关推荐
总结来说,这个基于Arduino的温度测试系统展示了物联网技术在智能家居领域的应用,结合了硬件和软件的创新,实现了对环境温度的准确监测和无线通信,为用户提供了便捷的智能生活体验。同时,其设计思路和实现方法也...
基于Arduino单片机的智能家居设计实用文档提供了一个智能家居系统的设计和实现方案,该系统可以实现对室内温度、湿度和光照强度等参数的实时检测,并借助 LCD 显示温湿度值,可以根据检测端探测到的光照强度和温度值...
标题中的“基于Arduino与Nrf24l01无线轴承润滑油智能温度监控系统设计”指的是一个专门用于监测大型立式秸秆粉碎机轴承润滑油温度的智能监控系统,它利用了Arduino开源硬件平台和Nrf24l01无线通信模块。这个系统解决...
综上所述,基于Arduino单片机的宠物可穿戴温度检测及调控装置,以其强大的功能、稳定性和用户友好的设计,成为了宠物健康监护领域的一次重大创新。通过应用现代电子技术,可以有效地解决宠物无人看护时的健康监测...
检测模块由温度传感器和液位传感器以及Arduino核心板组成,其中温度传感器采用数字温度传感器DS18B20,液位传感器则是采用5个开关量液位传感器来准确显示水箱液位。单片机采集到的传感器数据暂存在寄存器中,并通过...
基于Arduino的智能家居语音控制及能源管理系统的研究表明,将语音识别技术与传统智能家居电气控制系统相结合,能显著提升家庭生活的智能化水平,使人类与智能家居系统之间的互动更加自然和便捷。此外,通过实时数据...
《基于Arduino的土壤湿度检测系统详解》 在现代科技与智能农业的交汇点,基于Arduino的土壤湿度检测系统成为了一种高效且精准的植物养护工具。该系统通过集成硬件和软件,实现对土壤湿度的实时监测,并根据检测结果...
- **异常处理**:检测和处理潜在的错误情况,如温度传感器故障、电源问题等。 总的来说,基于Arduino的热风SMD返修台是一个集硬件设计、软件编程、控制理论于一身的综合性项目。通过这个项目,不仅可以学习到...
"基于Arduino和App Inventor2的空气温湿度检测系统设计" 本文设计了基于Arduino和App Inventor2的空气温湿度检测系统,系统结构简易、硬件连接简单、软件制作便捷、APP软件界面用户体验顺畅、成本较低。该系统主要...
- 在描述中提到的程序是基于官方示例改编的,这意味着它应该包含了基本的初始化、读取和显示温度数据的逻辑。 - 程序中的注释可能指明了特定引脚的用途,这对于理解和复制该程序至关重要。 - `void setup()`函数...
【标题】基于Arduino的智能泡茶机部分源码 在智能设备领域,Arduino是一个非常流行的开源电子原型平台,因其易用性和丰富的库支持,被广泛应用于各种创新项目,包括智能家居、自动化装置以及教学实验等。本项目是将...
标题中的“Android-基于android和Arduino的智能体温计android程序”揭示了这是一个融合了硬件与软件的项目,旨在创建一个能够监测体温并实时传输数据的智能设备。该项目使用了Arduino微控制器作为硬件基础,配合体温...
本文介绍了基于Arduino单片机的汽车启停防护系统的设计与实现,旨在通过利用现代电子设备提升车辆的启停安全性能。系统的提出是基于当前汽车数量不断上升,随之而来的交通安全问题日益严重。通过构建一套电子辅助...
6. **安全性考虑**:实验室安全至关重要,系统应包含故障检测和报警功能,比如当有害气体浓度超标时及时通知相关人员。 7. **用户界面**:为了便于用户操作,可能需要开发一个友好、直观的用户界面,这可能涉及到...
本项目基于Arduino开源硬件平台,旨在实现一个高效、节能的智能灌溉系统,通过精确控制水源,达到节水和优化植物生长环境的目标。以下是关于这个项目的详细知识点介绍: 1. **Arduino简介**:Arduino是一种易于使用...
本文介绍了一种基于ARDUINO的室内盆栽智能系统,该系统利用ARDUINO开发板、温湿度检测模块、WIFI模块、互联网平台等常用单元,实现智能化土壤湿度检测和自动浇灌功能,有效解决了家庭或办公室花卉浇灌不当带来的问题...
标题中的“基于Arduino的智能小车的火警系统代码”是指使用Arduino微控制器平台来设计一个具有火警检测功能的智能小车项目。这个系统利用了多种传感器来监测环境状况,确保在火灾发生时能够及时报警并采取相应措施。...