` 本帖最后由 jinyi7016 于 2016-7-16 23:11 编辑
项目用到了温度传感器模块,那么就在LCD上显示一下温度。
温度模块的传感器是NTC温敏电阻。初步测试,温度测量还是可以的。 这里有必要了解一下NTC。
NTC热敏电阻器是一种以过渡金属氧化物为主要原材料,采用电子陶瓷工艺制成的热敏陶瓷组件。
NTC热敏电阻器的价格低廉,在电子产品中被广泛应用,而且具有多种封装形式,能够很方便地应用到各种电路中。
NTC热敏电阻器根据材料、工艺不同情况,有不同的阻值和温度变化特性。
电阻温度系数是指环境温度变化1℃时热敏电阻器电阻值的相对变化量。知道某一个型号热敏电阻器的电阻温度系数后,就可以估算出热敏电阻器在相应温度下的实际电阻值。
它的电阻值随温度的升高而降低。这样就可以将测量的电阻电压换算成了温度值了。
温度传感器先使用A0口的插座上。
程序如下:
- #include
- #include
- #include
- #include "grove.hpp"
- #include
- #include
- int
- main(int argc, char **argv)
- {
- //! [Interesting]
- // Create the temperature sensor object using AIO pin 0
- upm::GroveTemp* temp = new upm::GroveTemp(0);
- std::cout << temp->name() << std::endl;
- char temperature[8];
- upm::Jhd1313m1 *lcd = new upm::Jhd1313m1(0, 0x3E, 0x62);
- lcd->setColor(40,150,150);//浅蓝
- //lcd->setColor(255,0,0);//红
- lcd->setCursor(0,0);
- lcd->write("Temperature:");
- lcd->setCursor(1,0);
- for (int i=0; i < 10; i++) {
- int celsius = temp->value();
- //int fahrenheit = (int) (celsius * 9.0/5.0 + 32.0);
- sprintf(temperature,"%d",celsius);
- lcd->setCursor(1,0);
- lcd->write(temperature);
- //printf("%d degrees Celsius, or %d degrees Fahrenheit
- ",
- //celsius, fahrenheit);
- sleep(1);
- }
- // Delete the temperature sensor object
- delete temp;
- delete lcd;
- //! [Interesting]
- return 0;
- }
复制代码
此时会在LCD上显示当前的测试,但是显示的温度不太准啊,看来计算的方法有些偏差啊。
`
|