Robofun 機器人論壇

標題: Arduino 新手發問 [打印本頁]

作者: arkei663    時間: 2012-11-1 16:33
標題: Arduino 新手發問
各位師兄你們好
我是從網站上得知有arduino的
看見網上發表arduino 能做的事情很多
便買回家嘗試一下
我想做一個測試溫度的模組
從網站上得到用DS18B20 溫度傳感器模塊 的程式
我照著網頁上的教學去做
但在serial monitor 卻不停出現

""no more address""

我卻找不到原因

附上程式:

#include <OneWire.h>

/* DS18S20 Temperature chip i/o


*/

OneWire
ds(10);
// on pin 10

void setup(void) {


// initialize inputs/outputs


// start serial port


Serial.begin(9600);

}

void loop(void) {


byte i;


byte present = 0;


byte data[12];


byte addr[8];


int Temp;


if ( !ds.search(addr)) {


//Serial.print("No more addresses.\n");


ds.reset_search();


return;


}


Serial.print("R=");
//R=28 Not sure what this is


for( i = 0; i < 8; i++) {


Serial.print(addr, HEX);


Serial.print(" ");


}


if ( OneWire::crc8( addr, 7) != addr[7]) {


Serial.print("CRC is not valid!\n");


return;


}


if ( addr[0] != 0x28) {


Serial.print("Device is not a DS18S20 family device.\n");


return;


}


ds.reset();


ds.select(addr);


ds.write(0x44,1);

// start conversion, with parasite power on at the end


delay(1000);
// maybe 750ms is enough, maybe not


// we might do a ds.depower() here, but the reset will take care of it.


present = ds.reset();


ds.select(addr);


ds.write(0xBE);

// Read Scratchpad


Serial.print("P=");


Serial.print(present,HEX);


Serial.print(" ");


for ( i = 0; i < 9; i++) {

// we need 9 bytes


data = ds.read();


Serial.print(data, HEX);


Serial.print("
");


}


Temp=(data[1]<<8)+data[0];//take the two bytes from the response relating to temperature


Temp=Temp>>4;//divide by 16 to get pure celcius readout



//next line is Fahrenheit conversion


Temp=Temp*1.8+32; // comment this line out to get celcius


Serial.print("T=");//output the temperature to serial port


Serial.print(Temp);


Serial.print("
");


Serial.print(" CRC=");


Serial.print( OneWire::crc8( data, 8), HEX);


Serial.println();

}


請求各位師兄幫忙


作者: coopermaa    時間: 2012-11-1 16:45
你 DS18S20  接在哪一 pin ?

按照網頁的說法,好像還得加一顆 4.7k 電阻
http://www.arduino.cc/playground/Learning/OneWire
作者: arkei663    時間: 2012-11-1 17:01
我接了pin10, 而且4700電阻也接了

謝謝
作者: coopermaa    時間: 2012-11-1 19:45
改用 Dallas Temperature Control Library 試試看:
http://milesburton.com/Main_Page ... ure_Control_Library

如果這個也不行,肯定是線路問題
作者: arkei663    時間: 2012-11-1 21:01
我試試看, 謝謝師兄
作者: coopermaa    時間: 2012-11-1 22:48
luck for you!
作者: alibuda174    時間: 2013-2-10 23:32
參考這篇看看http://yehnan.blogspot.tw/2013/01/arduinods18b20.html




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2