<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://nearbus.xyz/mediawiki/index.php?action=history&amp;feed=atom&amp;title=One-Wire_Temperature_Sensor_-_DS18B20</id>
		<title>One-Wire Temperature Sensor - DS18B20 - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://nearbus.xyz/mediawiki/index.php?action=history&amp;feed=atom&amp;title=One-Wire_Temperature_Sensor_-_DS18B20"/>
		<link rel="alternate" type="text/html" href="https://nearbus.xyz/mediawiki/index.php?title=One-Wire_Temperature_Sensor_-_DS18B20&amp;action=history"/>
		<updated>2026-05-15T05:16:53Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://nearbus.xyz/mediawiki/index.php?title=One-Wire_Temperature_Sensor_-_DS18B20&amp;diff=150&amp;oldid=prev</id>
		<title>Nearwiki: Created page with &quot; === Reference Information === &lt;br /&gt; * '''Info Web:''' http://seeedstudio.com/depot/one-wire-temperature-sensor-p-1235.html?cPath=25_27  * '''Techinical Spec:''' Temperature...&quot;</title>
		<link rel="alternate" type="text/html" href="https://nearbus.xyz/mediawiki/index.php?title=One-Wire_Temperature_Sensor_-_DS18B20&amp;diff=150&amp;oldid=prev"/>
				<updated>2018-03-29T21:16:38Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot; === Reference Information === &amp;lt;br /&amp;gt; * &amp;#039;&amp;#039;&amp;#039;Info Web:&amp;#039;&amp;#039;&amp;#039; http://seeedstudio.com/depot/one-wire-temperature-sensor-p-1235.html?cPath=25_27  * &amp;#039;&amp;#039;&amp;#039;Techinical Spec:&amp;#039;&amp;#039;&amp;#039; Temperature...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
=== Reference Information ===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* '''Info Web:''' http://seeedstudio.com/depot/one-wire-temperature-sensor-p-1235.html?cPath=25_27&lt;br /&gt;
&lt;br /&gt;
* '''Techinical Spec:''' Temperature range: -55°C to +125°C - Accuracy: ±0.5°C( -10°C to +85°C)&lt;br /&gt;
&lt;br /&gt;
* '''Connector Type:''' Base Shield V1.3 - Grove compatible - http://seeedstudio.com/depot/base-shield-v13-p-1378.html&lt;br /&gt;
&lt;br /&gt;
* '''Code Source:''' http://playground.arduino.cc/Learning/OneWire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Temperature Sensor - DS18B20 - (Waterproof)===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Temp probe 18B20.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MyNbios Code - Example ===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''In order to run this code you should copy the following code into the area delimited by the MY_BIOS CUSTOM CODE banners in the Hello_World_xxx.ino example.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#include &amp;lt;OneWire.h&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OneWire  ds(3);  // Arduino PIN_3&lt;br /&gt;
 &lt;br /&gt;
void Nearbus::MyNbios_0( byte portId, ULONG setValue, ULONG* pRetValue, byte vmcuMethod, PRT_CNTRL_STRCT* pPortControlStruct )&lt;br /&gt;
{&lt;br /&gt;
byte i;&lt;br /&gt;
byte present = 0;&lt;br /&gt;
byte type_s;&lt;br /&gt;
byte data[12];&lt;br /&gt;
byte addr[8];&lt;br /&gt;
float celsius, fahrenheit;&lt;br /&gt;
    &lt;br /&gt;
    for (i=0 ; i &amp;lt; 20 ; i++) {&lt;br /&gt;
        if ( ds.search(addr)) {&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
        ds.reset_search();&lt;br /&gt;
        delay(250); &lt;br /&gt;
    }&lt;br /&gt;
        if (i == 20 ) {&lt;br /&gt;
            *pRetValue = 0;  &lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    if(OneWire::crc8(addr, 7) != addr[7]) {&lt;br /&gt;
        *pRetValue = 0;&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // the first ROM byte indicates which chip&lt;br /&gt;
    switch (addr[0]) {&lt;br /&gt;
        case 0x10:&lt;br /&gt;
            type_s = 1;&lt;br /&gt;
            break;&lt;br /&gt;
		&lt;br /&gt;
        case 0x28:&lt;br /&gt;
            type_s = 0;&lt;br /&gt;
            break;&lt;br /&gt;
		&lt;br /&gt;
        case 0x22:&lt;br /&gt;
            type_s = 0;&lt;br /&gt;
            break;&lt;br /&gt;
		&lt;br /&gt;
        default:&lt;br /&gt;
            *pRetValue = 0;&lt;br /&gt;
            return;&lt;br /&gt;
    } &lt;br /&gt;
    ds.reset();&lt;br /&gt;
    ds.select(addr);&lt;br /&gt;
    ds.write(0x44, 1);                                    // start conversion, with parasite power on at the end&lt;br /&gt;
    delay(1000);                                          // maybe 750ms is enough, maybe not&lt;br /&gt;
    present = ds.reset();&lt;br /&gt;
    ds.select(addr);    &lt;br /&gt;
    ds.write(0xBE);                                       // Read Scratchpad&lt;br /&gt;
&lt;br /&gt;
    for ( i = 0; i &amp;lt; 9; i++) {                            // we need 9 bytes&lt;br /&gt;
        data[i] = ds.read();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    int16_t raw = (data[1] &amp;lt;&amp;lt; 8) | data[0];&lt;br /&gt;
    if (type_s) {&lt;br /&gt;
        raw = raw &amp;lt;&amp;lt; 3;                                   // 9 bit resolution default&lt;br /&gt;
        if (data[7] == 0x10) {                            // &amp;quot;count remain&amp;quot; gives full 12 bit resolution&lt;br /&gt;
            raw = (raw &amp;amp; 0xFFF0) + 12 - data[6];&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
	else {&lt;br /&gt;
        byte cfg = (data[4] &amp;amp; 0x60);&lt;br /&gt;
        // at lower res, the low bits are undefined, so let's zero them&lt;br /&gt;
        if (cfg == 0x00) raw = raw &amp;amp; ~7;                  // 9 bit resolution, 93.75 ms&lt;br /&gt;
        else if (cfg == 0x20) raw = raw &amp;amp; ~3;             // 10 bit res, 187.5 ms&lt;br /&gt;
        else if (cfg == 0x40) raw = raw &amp;amp; ~1;             // 11 bit res, 375 ms&lt;br /&gt;
		// default is 12 bit resolution, 750 ms conversion time&lt;br /&gt;
    }&lt;br /&gt;
    celsius = (float)raw / 16.0;&lt;br /&gt;
    fahrenheit = celsius * 1.8 + 32.0;       &lt;br /&gt;
  &lt;br /&gt;
    if ( !setValue ) {                                    // NearAPI: [value=1] =&amp;gt; Fahrenheit - [value=0] =&amp;gt; Celsius&lt;br /&gt;
        *pRetValue = (ULONG) (celsius * 100);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        *pRetValue = (ULONG) (fahrenheit * 100);&lt;br /&gt;
    }    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nearwiki</name></author>	</entry>

	</feed>