如何使用LCD显示屏显示温度和光强度

电子说

1.3w人已加入

描述

概述

在本课程中,您将基于在第11课中学到的内容并使用LCD显示屏显示温度和光强度。

使用第9课中使用的同一光电管测量光强度。

要测量温度,您将使用温度测量芯片。该设备只有3条导线,两条分别用于5V和GND,第三条导线直接连接到Arduino上的模拟输入。

零件

零件 数量

LCD显示(16x2个字符)

1

10kΩ可变电阻器(电位器)

1

1kΩ电阻(棕色,黑色,红色条纹)

1

光电管(光敏电阻)

1

TMP36温度传感器

1

半面包板

1

Arduino Uno R3

1

跳线包

1

TMP36的外观类似于PN2222晶体管,但是如果看封装体的平坦侧面,则应该看到它被标记为TMP36。

面包板布局

面包板布局基于第11课的布局,因此,如果您仍将其放在面包板上,它将大大简化操作。

温度传感器

有一些跳线在此版式上已稍有移动。尤其是锅底附近的那些。

光电管,1kΩ电阻和TMP36都是板子的新添加。 TMP36的曲面朝向显示器。

Arduino代码

此草图基于第11课的草图。将其加载到Arduino上,您应该发现将手指放在上面即可加热温度传感器会增加温度读数。

此外,如果您将手放在光电管上,遮挡了一些光,读数也会降低。

下载:文件

复制代码

/*

Adafruit Arduino - Lesson 12. Light and Temperature

*/

#include

int tempPin = 0;

int lightPin = 1;

// BS E D4 D5 D6 D7

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup()

{

lcd.begin(16, 2);

}

void loop()

{

// Display Temperature in C

int tempReading = analogRead(tempPin);

float tempVolts = tempReading * 5.0 / 1024.0;

float tempC = (tempVolts - 0.5) * 100.0;

float tempF = tempC * 9.0 / 5.0 + 32.0;

// ----------------

lcd.print(“Temp F ”);

lcd.setCursor(6, 0);

lcd.print(tempF);

// Display Light on second row

int lightReading = analogRead(lightPin);

lcd.setCursor(0, 1);

// ----------------

lcd.print(“Light ”);

lcd.setCursor(6, 1);

lcd.print(lightReading);

delay(500);

} /*

Adafruit Arduino - Lesson 12. Light and Temperature

*/

#include

int tempPin = 0;

int lightPin = 1;

// BS E D4 D5 D6 D7

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup()

{

lcd.begin(16, 2);

}

void loop()

{

// Display Temperature in C

int tempReading = analogRead(tempPin);

float tempVolts = tempReading * 5.0 / 1024.0;

float tempC = (tempVolts - 0.5) * 100.0;

float tempF = tempC * 9.0 / 5.0 + 32.0;

// ----------------

lcd.print(“Temp F ”);

lcd.setCursor(6, 0);

lcd.print(tempF);

// Display Light on second row

int lightReading = analogRead(lightPin);

lcd.setCursor(0, 1);

// ----------------

lcd.print(“Light ”);

lcd.setCursor(6, 1);

lcd.print(lightReading);

delay(500);

}

I

下载:文件

复制代码

// BS E D4 D5 D6 D7

LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // BS E D4 D5 D6 D7

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

如果您决定更改使用的引脚,这将使事情变得更容易。

在“循环”功能中,现在发生了两个有趣的事情。首先,我们必须将温度传感器的模拟量转换为实际温度,其次,我们必须弄清楚如何显示它们。

首先,让我们看一下计算温度。

下载:文件

复制代码

int tempReading = analogRead(tempPin);

float tempVolts = tempReading * 5.0 / 1024.0;

float tempC = (tempVolts - 0.5) * 100.0;

float tempF = tempC * 9.0 / 5.0 + 32.0; int tempReading = analogRead(tempPin);

float tempVolts = tempReading * 5.0 / 1024.0;

float tempC = (tempVolts - 0.5) * 100.0;

float tempF = tempC * 9.0 / 5.0 + 32.0;

首先将温度传感器的原始读数乘以5,然后除以1024,以得到‘tempPin处的电压(0至5之间)模拟输入。

要将TMP36的电压转换为摄氏度,必须从测量值中减去0.5V,然后乘以100。

要将其转换为温度。在华氏温度下,您必须将其乘以9/5,然后再加上32。

在LCD显示屏上显示变化的读数可能很棘手。主要的问题是读数不一定总是相同的位数。因此,如果温度从101.50变为99.00,则旧读数的多余数字有留在显示器上的危险。/p》

下载:文件

复制代码

// ----------------

lcd.print(“Temp F ”);

lcd.setCursor(6, 0);

lcd.print(tempF); // ----------------

lcd.print(“Temp F ”);

lcd.setCursor(6, 0);

lcd.print(tempF);

一个相当奇怪的注释用来提醒您显示屏的16列。然后,您可以打印该长度的字符串,并在其中带有实际读数的空格。

要填充空格,请设置光标所在位置,然后显示读数。

完全相同的方法用于显示光照水平。光线水平没有单位,我们只显示模拟读数的原始读数。

其他要做的事情

尝试更改示例,使其以摄氏度而不是华氏度显示温度。

责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分