第二十四课--Microduino 数码管温度计/zh
Language | English |
---|
目的本教程将教大家使用DS18B20温度传感器在Microduino上通过数码管显示温度 设备
扬声器 常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。 正确连线,面对着扁平的那一面,左负右正,一旦接反就会立刻发热,有可能烧毁!同时,接反也是导致该传感器总是显示85℃的原因。正确接法:面对着扁平的那一面,左负右正。 原理图引脚表
程序byte digit0 = 10; //十位数Microduino pin
byte digit1 = 11; //个位数Microduino pin
byte dotPin = 2; //数码管小数点对应的pin
byte sevenSegmentPins[] = {
2,3,4,5,6,7,8}; //A,B,C,D,E,F,G 对应的Microduino pin
byte sevenSegment[10][7] =
{
//a b c d e f g
{
0,0,0,0,0,0,1 }
, // = 0
{
1,0,0,1,1,1,1 }
, // = 1
{
0,0,1,0,0,1,0 }
, // = 2
{
0,0,0,0,1,1,0 }
, // = 3
{
1,0,0,1,1,0,0 }
, // = 4
{
0,1,0,0,1,0,0 }
, // = 5
{
0,1,0,0,0,0,0 }
, // = 6
{
0,0,0,1,1,1,1 }
, // = 7
{
0,0,0,0,0,0,0 }
, // = 8
{
0,0,0,1,1,0,0 } // = 9
};
void setup() {
//初始化全部亮起
pinMode(dotPin, OUTPUT); //pin 2
pinMode(digit0, OUTPUT); //pin 10
pinMode(digit1, OUTPUT); //pin 11
for(int i=0; i<7; i++)
{
pinMode(sevenSegmentPins[i], OUTPUT);
}
digitalWrite(dotPin, HIGH);
digitalWrite(digit0, HIGH);
digitalWrite(digit1, HIGH);
}
//显示数字
void segmentWrite(byte digit)
{
byte pin = 2;
for (byte i=0; i<7; ++i)
{
digitalWrite(pin, sevenSegment[digit][i]);
++pin;
}
}
void loop() {
int n = analogRead(A0); //读取A0口的电压值
int vol = n * (5.0 / 1023.0*100); //使用浮点数存储温度数据,温度数据由电压值换算得到
//取个位数
int sd=vol%10;
//取十位数
int td=vol/10;
digitalWrite(digit0, LOW); //熄灭十位数码管
segmentWrite(sd); //显示个位
delay(10); //10ms 延迟
digitalWrite(digit0, HIGH); //点亮十位数码管
digitalWrite(digit1, LOW); //熄灭个位数码管
segmentWrite(td); //显示十位
delay(10); //10ms 延迟
digitalWrite(digit1, HIGH); //点亮个位数码管
}
调试步骤一:代码复制到IDE中编译 步骤二:编译不出错的话开始连接电路,如下图: 步骤三:连接好后,运行代码。 步骤四:看数码管显示,找一个比较热的东西靠近温度传感器,看看数码管变化。
结果传感器靠近热源后,数码管显示数值会升高 视频 |