<?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=Temperature_%26_Humidity_Sensor_Pro</id>
		<title>Temperature &amp; Humidity Sensor Pro - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://nearbus.xyz/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Temperature_%26_Humidity_Sensor_Pro"/>
		<link rel="alternate" type="text/html" href="https://nearbus.xyz/mediawiki/index.php?title=Temperature_%26_Humidity_Sensor_Pro&amp;action=history"/>
		<updated>2026-05-15T10:30:38Z</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=Temperature_%26_Humidity_Sensor_Pro&amp;diff=151&amp;oldid=prev</id>
		<title>Nearwiki: Created page with &quot;  * '''Product Web:''' http://seeedstudio.com/depot/grove-temperaturehumidity-sensor-pro-p-838.html?cPath=25_27  * '''Wiki:''' http://seeedstudio.com/wiki/Grove_-_Temperature_...&quot;</title>
		<link rel="alternate" type="text/html" href="https://nearbus.xyz/mediawiki/index.php?title=Temperature_%26_Humidity_Sensor_Pro&amp;diff=151&amp;oldid=prev"/>
				<updated>2018-03-29T21:17:11Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;  * &amp;#039;&amp;#039;&amp;#039;Product Web:&amp;#039;&amp;#039;&amp;#039; http://seeedstudio.com/depot/grove-temperaturehumidity-sensor-pro-p-838.html?cPath=25_27  * &amp;#039;&amp;#039;&amp;#039;Wiki:&amp;#039;&amp;#039;&amp;#039; http://seeedstudio.com/wiki/Grove_-_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;
&lt;br /&gt;
* '''Product Web:''' http://seeedstudio.com/depot/grove-temperaturehumidity-sensor-pro-p-838.html?cPath=25_27&lt;br /&gt;
&lt;br /&gt;
* '''Wiki:''' http://seeedstudio.com/wiki/Grove_-_Temperature_and_Humidity_Sensor_Pro&lt;br /&gt;
&lt;br /&gt;
* '''Code Source:''' http://seeedstudio.com/wiki/File:Humidity_Temperature_Sensor.zip&lt;br /&gt;
&lt;br /&gt;
* '''Technical Spec:''' Humidytly: 5% RH - 99% RH - Temperature -40°C - 80°C - Acuracy: 2% RH / 0.5°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;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Temperature &amp;amp; Humidity Sensor Pro===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Grove_Tem_Humid.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_NBIOS CUSTOM CODE banners in the Hello_World_xxx.ino example.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void Nearbus::MyNbios_0( byte portId, UINT setValue, ULONG* pRetValue, byte vmcuMethod, PRT_CNTRL_STRCT* pPortControlStruct  )&lt;br /&gt;
{ &lt;br /&gt;
UINT data[6];&lt;br /&gt;
UINT _pin;&lt;br /&gt;
UINT _count = 6;&lt;br /&gt;
ULONG _lastreadtime = 0;&lt;br /&gt;
boolean firstreading = true;&lt;br /&gt;
float h;&lt;br /&gt;
float t;  &lt;br /&gt;
byte ret;&lt;br /&gt;
UINT laststate = HIGH;&lt;br /&gt;
UINT counter = 0;&lt;br /&gt;
UINT j = 0;&lt;br /&gt;
UINT  i;&lt;br /&gt;
ULONG currenttime;&lt;br /&gt;
        &lt;br /&gt;
        //************************************&lt;br /&gt;
        // Reconfiguring Ports as I/O&lt;br /&gt;
        //************************************&lt;br /&gt;
        if( pPortControlStruct-&amp;gt;portMode != MYDRIVER_MODE ) &lt;br /&gt;
        {&lt;br /&gt;
            PortModeConfig( portId, MYDRIVER_MODE );        &lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        //************************************&lt;br /&gt;
        // Custom Function&lt;br /&gt;
        //************************************&lt;br /&gt;
          _pin = pPortControlStruct-&amp;gt;pinId;&lt;br /&gt;
         &lt;br /&gt;
          // pull the pin high and wait 250 milliseconds&lt;br /&gt;
          digitalWrite(_pin, HIGH);&lt;br /&gt;
          delay(250);&lt;br /&gt;
&lt;br /&gt;
          currenttime = millis();&lt;br /&gt;
          if (currenttime &amp;lt; _lastreadtime) {&lt;br /&gt;
              // ie there was a rollover&lt;br /&gt;
              _lastreadtime = 0;&lt;br /&gt;
          }&lt;br /&gt;
          if (!firstreading &amp;amp;&amp;amp; ((currenttime - _lastreadtime) &amp;lt; 2000)) {&lt;br /&gt;
              ret = 0; // return last correct measurement&lt;br /&gt;
              //delay(2000 - (currenttime - _lastreadtime));&lt;br /&gt;
          }&lt;br /&gt;
          else {&lt;br /&gt;
              firstreading = false;&lt;br /&gt;
              _lastreadtime = millis();&lt;br /&gt;
            &lt;br /&gt;
              data[0] = data[1] = data[2] = data[3] = data[4] = 0;&lt;br /&gt;
              &lt;br /&gt;
              // now pull it low for ~20 milliseconds&lt;br /&gt;
              pinMode(_pin, OUTPUT);&lt;br /&gt;
              digitalWrite(_pin, LOW);&lt;br /&gt;
              delay(20);&lt;br /&gt;
              cli();&lt;br /&gt;
              digitalWrite(_pin, HIGH);&lt;br /&gt;
              delayMicroseconds(40);&lt;br /&gt;
              pinMode(_pin, INPUT);&lt;br /&gt;
            &lt;br /&gt;
              // read in timings&lt;br /&gt;
              for ( i=0; i&amp;lt; 85; i++) {   // #define MAXTIMINGS = 85 // how many timing transitions we need to keep track of. 2 * number bits + extra&lt;br /&gt;
                  counter = 0;&lt;br /&gt;
                  while (digitalRead(_pin) == laststate) {&lt;br /&gt;
                      counter++;&lt;br /&gt;
                      delayMicroseconds(1);&lt;br /&gt;
                      if (counter == 255) {&lt;br /&gt;
                          break;&lt;br /&gt;
                      }&lt;br /&gt;
                  }&lt;br /&gt;
                  laststate = digitalRead(_pin);&lt;br /&gt;
          &lt;br /&gt;
                  if (counter == 255) break;&lt;br /&gt;
          &lt;br /&gt;
                  // ignore first 3 transitions&lt;br /&gt;
                  if ((i &amp;gt;= 4) &amp;amp;&amp;amp; (i%2 == 0)) {&lt;br /&gt;
                      // shove each bit into the storage bytes&lt;br /&gt;
                      data[j/8] &amp;lt;&amp;lt;= 1;&lt;br /&gt;
                      if (counter &amp;gt; _count)&lt;br /&gt;
                          data[j/8] |= 1;&lt;br /&gt;
                      j++;&lt;br /&gt;
                  }&lt;br /&gt;
              }&lt;br /&gt;
              sei();&lt;br /&gt;
            &lt;br /&gt;
              // check we read 40 bits and that the checksum matches&lt;br /&gt;
              if ((j &amp;gt;= 40) &amp;amp;&amp;amp; &lt;br /&gt;
                  (data[4] == ((data[0] + data[1] + data[2] + data[3]) &amp;amp; 0xFF)) ) {&lt;br /&gt;
                  ret = 0;&lt;br /&gt;
              }&lt;br /&gt;
              else{&lt;br /&gt;
                  ret = 1;&lt;br /&gt;
              }&lt;br /&gt;
          }&lt;br /&gt;
          if (ret == 0) {&lt;br /&gt;
              h = data[0];&lt;br /&gt;
              h *= 256;&lt;br /&gt;
              h += data[1];&lt;br /&gt;
              h *= 10;&lt;br /&gt;
&lt;br /&gt;
              t = data[2] &amp;amp; 0x7F;&lt;br /&gt;
              t *= 256;&lt;br /&gt;
              t += data[3];&lt;br /&gt;
              t *= 10;&lt;br /&gt;
              if (data[2] &amp;amp; 0x80)&lt;br /&gt;
              t *= -1;&lt;br /&gt;
          }&lt;br /&gt;
          else {&lt;br /&gt;
              t = 0;&lt;br /&gt;
              h = 0;    &lt;br /&gt;
          }  &lt;br /&gt;
          // delay(250); &lt;br /&gt;
                &lt;br /&gt;
        //************************************&lt;br /&gt;
        // Updating register &lt;br /&gt;
        //************************************         &lt;br /&gt;
        * pRetValue = (ULONG) t;                &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>