BeeG 发表于 2014-5-9 13:08 static/image/common/back.gif
我也是arduinouno啊
上拉电阻加了不?读出的结果是什么?
一次成功{:soso_e102:}
你的传感器是不是没插好,我的没插好时要么显示0要么就是-127
谢谢楼主了!!!
顶一下,:lol多谢楼主
:dizzy:学习中
直接用库里面的例程也不行啊。新手上路,请问哪位耐心又有空的大神有详细点的教程,教教我这个菜鸟:dizzy:
很cool,Arduino很多库搞的过于繁琐了
BeeG 发表于 2014-5-8 19:33 static/image/common/back.gif
我现在测出来的值是-127.00呢 怎么回事呢
如果环境温度不是恰好是-127,那么就是硬件通信错误,DS18B20内置了两个错误结果,还有一个是85。如果连续读到的是这两个数之一,便可以确定要检查硬件系统了。
屌炸天了啊!楼主
本帖最后由 504835618 于 2014-9-29 22:37 编辑
谢谢LZ的程序,在原来的程序上加上了OLED显示,效果还可以,下面上程序
#include "DS18B20_S.h"
#include <U8glib.h>
//SSD1306
U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9,8);// SW SPI Com: SCK = 13, MOSI = 11, CS = 10-NC, A0/DC = 9
//DS18B20(byte pin)连接管脚
//传感器设定为10位模式,每次转换时间<187.5ms,如果需要12位模式,请修改库文件of ds.set(0x7F);
DS18B20_Sds(7);//pin9
void setup() {
Serial.begin(9600);
}
void loop() {
ds.start();//开始测量(所有传感器)
/////////判断转换是否完成
///只有在三根线连接模式下有效,两根线模式下请不要使用
//while(!ds.ready()){
// delay(10);
//}
////////////
delay(200);//2根线连接模式
float a=ds.get();
Serial.println("c0=");
if(a>200){ //CRC 校验错误
Serial.println("CRC error");
}
else{
Serial.print(a);
}
//下面的不重要
// void set(byte n);//set(0x1F) 9位模式 delay(94) ;
//0x3F 10位模式 delay(188);
//0x5F 11位模式 delay(375);
//0x7F 12 位模式 delay(750)
u8g.firstPage();
do {
draw();
}
while( u8g.nextPage() );
delay(1000);
}
void draw(void) {
//u8g.setRot180();
u8g.drawLine(0,15 , 128, 15);
u8g.setFont(u8g_font_osb26);
u8g.setPrintPos(5, 55);
u8g.print(ds.get());
u8g.setFont(u8g_font_fub14);
u8g.setPrintPos(100, 55);
u8g.print(char(176));
u8g.print("C");
u8g.setFont(u8g_font_fub11);
u8g.setPrintPos(3, 12);//X,Y
u8g.print("SD18B20.Temp");
//delay(5);
}
照例下载好了后,串口一直报错。连两个传感器的是串口输出错误,连一个的是输出零!后来仔细看楼主的说明,是要连下拉电阻的,这样连一个传感器和两个传感器的例程都输出温度值了!货真价实的精华帖!
啊喂,,难道木有人觉得延时200ms很过分么。。。。。。
支持楼主!!!
这么好的东西,应该托管在GitHub让更多的人受益呀!
这个支持零下温度测量吗,我现在用的库测不到零下。