zhengzaifaya 发表于 2013-8-21 22:49:38

DS18B20 温度传感器测试

本帖最后由 zhengzaifaya 于 2013-8-21 23:18 编辑

使用一块OLED屏幕来显示温度, 3.7V手机电池供电, 精度是0.125℃.



代码:
#include <OneWire.h>
#include <SSD1306.h>

#define OLED_CLK 9
#define OLED_MOSI 8
#define OLED_RESET 7
#define OLED_DC 6
#define DS18B20_PIN 2

SSD1306 oled(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, -1);
OneWire ds(DS18B20_PIN);
byte addr;

void setup(void) {
Serial.begin(9600);
oled.ssd1306_init(SSD1306_SWITCHCAPVCC);
oled.clear();
oled.display();
while (!ds.search(addr))
{
    ds.reset_search();
    delay(250);
}
}

void loop(void) {
byte i;
byte present = 0;
byte data;
float celsius;

ds.reset();
ds.select(addr);
ds.write(0x44, 1);

delay(800);

present = ds.reset();
ds.select(addr);   
ds.write(0xBE);

for ( i = 0; i < 5; i++) data = ds.read();

int16_t raw = (data << 8) | data;
byte cfg = (data & 0x60);
if (cfg == 0x00) raw = raw & ~7;// 9 bit, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit, 375 ms
//// default 12 bit, 750 ms
celsius = (float)raw / 16.0;

char temp;
dtostrf(celsius, 5, 2, temp);
strcat(temp, " Celsius.");
oled.clear();
oled.drawstring(22, 4, temp);
oled.display();
}

Fortware 发表于 2013-8-22 00:47:14

连线很简单,LCD是5110吧?

zhengzaifaya 发表于 2013-8-22 06:40:24

Fortware 发表于 2013-8-22 00:47 static/image/common/back.gif
连线很简单,LCD是5110吧?

LCD是128*64的OLED, 使用4线SPI驱动.

Cupid 发表于 2013-8-22 07:55:52

OLED在哪儿买的,有某宝的链接没?

zhengzaifaya 发表于 2013-8-22 08:15:20

Cupid 发表于 2013-8-22 07:55 static/image/common/back.gif
OLED在哪儿买的,有某宝的链接没?

某宝地址 http://item.taobao.com/item.htm?id=17345035506

数字 发表于 2013-8-22 09:00:31

rtc板起什么作用?

wing 发表于 2013-8-22 09:07:00

屏是单色的?不是ADA那种彩屏么?

Cupid 发表于 2013-8-22 09:11:08

zhengzaifaya 发表于 2013-8-22 08:15 static/image/common/back.gif
某宝地址 http://item.taobao.com/item.htm?id=17345035506

谢谢。:loveliness:

zhengzaifaya 发表于 2013-8-22 09:26:52

wing 发表于 2013-8-22 09:07 static/image/common/back.gif
屏是单色的?不是ADA那种彩屏么?

是单色的屏幕.

zhengzaifaya 发表于 2013-8-22 09:27:09

数字 发表于 2013-8-22 09:00 static/image/common/back.gif
rtc板起什么作用?

DS18B20是焊在RTC板上的.

学慧放弃 发表于 2013-8-22 10:56:35

做起来应该很简单吧?

heiketiguo 发表于 2013-8-22 17:23:39

这个OLED屏不错!!

wunanyx 发表于 2013-8-23 08:29:18

oled屏幕省电吧?

软件-蹄飞 发表于 2013-8-23 11:02:23

你真的是初一的学生么?天才!!

zhanggang1971 发表于 2013-8-23 12:53:22

数字 发表于 2013-8-22 09:00 static/image/common/back.gif
rtc板起什么作用?

同问,望解答
页: [1] 2
查看完整版本: DS18B20 温度传感器测试