Robofun 機器人論壇

用戶名  找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 4334|回復: 6
打印 上一主題 下一主題

Arduino 新手發問

[複製鏈接]
跳轉到指定樓層
1#
發表於 2012-11-1 16:33:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位師兄你們好
我是從網站上得知有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();

}


請求各位師兄幫忙

2#
發表於 2012-11-1 16:45:23 | 只看該作者
你 DS18S20  接在哪一 pin ?

按照網頁的說法,好像還得加一顆 4.7k 電阻
http://www.arduino.cc/playground/Learning/OneWire
3#
 樓主| 發表於 2012-11-1 17:01:45 | 只看該作者
我接了pin10, 而且4700電阻也接了

謝謝
4#
發表於 2012-11-1 19:45:49 | 只看該作者
改用 Dallas Temperature Control Library 試試看:
http://milesburton.com/Main_Page ... ure_Control_Library

如果這個也不行,肯定是線路問題
5#
 樓主| 發表於 2012-11-1 21:01:54 | 只看該作者
我試試看, 謝謝師兄
6#
發表於 2012-11-1 22:48:07 | 只看該作者
luck for you!
7#
發表於 2013-2-10 23:32:12 | 只看該作者
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2025-2-26 06:27 , Processed in 0.240163 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表