<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LPCXpresso IDEのトピックRe: Dht11</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Dht11/m-p/559623#M15516</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by tbelo on Wed Oct 21 10:03:01 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Here you are.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;For IRC 12Mhz at port 1.4 on lpc1115.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;

getHumidity(&amp;amp;sensors_data);

#define DHT_MAXTIMINGS10000
#define DHT_BREAKTIME20
#define DHT_MAXCOUNT32000


void getHumidity (sensors* output){
uint16_t counter = 0;
uint8_t laststate = 1;
uint16_t i=0,k&amp;nbsp; = 0;
uint8_t j = 0;
uint8_t checksum = 0;
uint8_t data[100];
data[0] = data[1] = data[2] = data[3] = data[4] = 0;
uint8_t temperature;
uint8_t humidity;

LPC_IOCON-&amp;gt;PIO1_4 = 0xD0;// PIO1.4, PULL UP
LPC_GPIO1-&amp;gt;DIR |= (1&amp;lt;&amp;lt;4);//output
LPC_GPIO1-&amp;gt;DATA |= (0x1&amp;lt;&amp;lt;4);//high
delayms(250);
// Wake up device, 250ms of high


LPC_GPIO1-&amp;gt;DATA &amp;amp;= ~(0x1&amp;lt;&amp;lt;4);//low
delayms(20);
// Hold low for 20ms

//LPC_GPIO1-&amp;gt;DIR |= (1&amp;lt;&amp;lt;4);//output
LPC_GPIO1-&amp;gt;DATA |= (0x1&amp;lt;&amp;lt;4);//high
delayus(1);
// High for 40ns


LPC_GPIO1-&amp;gt;DIR &amp;amp;= ~(1&amp;lt;&amp;lt;4);//input
while (((LPC_GPIO1-&amp;gt;DATA &amp;amp; (0x1&amp;lt;&amp;lt;4))==1) &amp;amp;&amp;amp; (i &amp;lt; DHT_MAXCOUNT)) {
for (k = 0; k&amp;lt;6; k++) {}
i++;
}

for (i = 0; i &amp;lt; DHT_MAXTIMINGS; i++)
{
// Count high time (in approx us)
counter = 0;
while ((LPC_GPIO1-&amp;gt;DATA &amp;amp; (0x1&amp;lt;&amp;lt;4)) == laststate)
{
counter++;
for (k = 0; k&amp;lt;6; k++) {}
if (counter == 1000)
break;
}

laststate = (LPC_GPIO1-&amp;gt;DATA &amp;amp; (0x1&amp;lt;&amp;lt;4));
if (counter == 1000)
break;
// store data after 3 reads
// ignore first 3 transitions
if ((i&amp;gt;3) &amp;amp;&amp;amp; (i%2 == 0)) {
// shove each bit into the storage bytes
//data[j/8] will point to the same byte for 8 consecutive values of j
//in each loop, this byte will be shifted left by one bit
data[j/8] &amp;lt;&amp;lt;= 1;
if (counter &amp;gt; DHT_BREAKTIME)
data[j/8] |= 1;
j++;
}
}


if (j &amp;gt;= 39) {
checksum = (data[0] + data[1] + data[2] + data[3]) &amp;amp; 0xFF;
//if (data[4] == checksum) {
// checksum is valid

humidity =&amp;nbsp; data[0];
temperature = data[2];

//citoa ((uint8_t)humidity, 10, output-&amp;gt;humidityC);
//citoa (temperature, 10, output-&amp;gt;temperatureC);

} else {
// output-&amp;gt;humidityC[0]='\0';
}

LPC_IOCON-&amp;gt;PIO1_4 = 0xC0;// PIO1.4, PULL UP
LPC_GPIO1-&amp;gt;DIR&amp;nbsp; &amp;amp;= ~(1&amp;lt;&amp;lt;4);
LPC_GPIO3-&amp;gt;MASKED_ACCESS[1&amp;lt;&amp;lt;4] = 0xFFFFFFFF;
}



void delayus (uint16_t ms){
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;LOAD = 479;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;VAL = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;CTRL = 7;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Wait(ms);
}

void delayms (uint16_t ms){
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;LOAD = 11999;//(12000-1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;VAL = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;CTRL = 7;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Wait(ms);
}

&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 23:38:56 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T23:38:56Z</dc:date>
    <item>
      <title>Dht11</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Dht11/m-p/559622#M15515</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CR7 on Mon Mar 11 06:31:22 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I am currently using LPC1769 and I want to program the code for DHT11 Humidity sensor.Could anyone help me about the coding? Or anyone has written the program about this sensor? Please help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The DHT11 datasheet can be found here: &lt;/SPAN&gt;&lt;A href="http://"&gt;http://www.micro4you.com/files/sensor/DHT11.pdf&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you very much.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:38:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Dht11/m-p/559622#M15515</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:38:55Z</dc:date>
    </item>
    <item>
      <title>Re: Dht11</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Dht11/m-p/559623#M15516</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by tbelo on Wed Oct 21 10:03:01 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Here you are.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;For IRC 12Mhz at port 1.4 on lpc1115.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;

getHumidity(&amp;amp;sensors_data);

#define DHT_MAXTIMINGS10000
#define DHT_BREAKTIME20
#define DHT_MAXCOUNT32000


void getHumidity (sensors* output){
uint16_t counter = 0;
uint8_t laststate = 1;
uint16_t i=0,k&amp;nbsp; = 0;
uint8_t j = 0;
uint8_t checksum = 0;
uint8_t data[100];
data[0] = data[1] = data[2] = data[3] = data[4] = 0;
uint8_t temperature;
uint8_t humidity;

LPC_IOCON-&amp;gt;PIO1_4 = 0xD0;// PIO1.4, PULL UP
LPC_GPIO1-&amp;gt;DIR |= (1&amp;lt;&amp;lt;4);//output
LPC_GPIO1-&amp;gt;DATA |= (0x1&amp;lt;&amp;lt;4);//high
delayms(250);
// Wake up device, 250ms of high


LPC_GPIO1-&amp;gt;DATA &amp;amp;= ~(0x1&amp;lt;&amp;lt;4);//low
delayms(20);
// Hold low for 20ms

//LPC_GPIO1-&amp;gt;DIR |= (1&amp;lt;&amp;lt;4);//output
LPC_GPIO1-&amp;gt;DATA |= (0x1&amp;lt;&amp;lt;4);//high
delayus(1);
// High for 40ns


LPC_GPIO1-&amp;gt;DIR &amp;amp;= ~(1&amp;lt;&amp;lt;4);//input
while (((LPC_GPIO1-&amp;gt;DATA &amp;amp; (0x1&amp;lt;&amp;lt;4))==1) &amp;amp;&amp;amp; (i &amp;lt; DHT_MAXCOUNT)) {
for (k = 0; k&amp;lt;6; k++) {}
i++;
}

for (i = 0; i &amp;lt; DHT_MAXTIMINGS; i++)
{
// Count high time (in approx us)
counter = 0;
while ((LPC_GPIO1-&amp;gt;DATA &amp;amp; (0x1&amp;lt;&amp;lt;4)) == laststate)
{
counter++;
for (k = 0; k&amp;lt;6; k++) {}
if (counter == 1000)
break;
}

laststate = (LPC_GPIO1-&amp;gt;DATA &amp;amp; (0x1&amp;lt;&amp;lt;4));
if (counter == 1000)
break;
// store data after 3 reads
// ignore first 3 transitions
if ((i&amp;gt;3) &amp;amp;&amp;amp; (i%2 == 0)) {
// shove each bit into the storage bytes
//data[j/8] will point to the same byte for 8 consecutive values of j
//in each loop, this byte will be shifted left by one bit
data[j/8] &amp;lt;&amp;lt;= 1;
if (counter &amp;gt; DHT_BREAKTIME)
data[j/8] |= 1;
j++;
}
}


if (j &amp;gt;= 39) {
checksum = (data[0] + data[1] + data[2] + data[3]) &amp;amp; 0xFF;
//if (data[4] == checksum) {
// checksum is valid

humidity =&amp;nbsp; data[0];
temperature = data[2];

//citoa ((uint8_t)humidity, 10, output-&amp;gt;humidityC);
//citoa (temperature, 10, output-&amp;gt;temperatureC);

} else {
// output-&amp;gt;humidityC[0]='\0';
}

LPC_IOCON-&amp;gt;PIO1_4 = 0xC0;// PIO1.4, PULL UP
LPC_GPIO1-&amp;gt;DIR&amp;nbsp; &amp;amp;= ~(1&amp;lt;&amp;lt;4);
LPC_GPIO3-&amp;gt;MASKED_ACCESS[1&amp;lt;&amp;lt;4] = 0xFFFFFFFF;
}



void delayus (uint16_t ms){
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;LOAD = 479;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;VAL = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;CTRL = 7;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Wait(ms);
}

void delayms (uint16_t ms){
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;LOAD = 11999;//(12000-1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;VAL = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;CTRL = 7;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Wait(ms);
}

&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:38:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Dht11/m-p/559623#M15516</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:38:56Z</dc:date>
    </item>
  </channel>
</rss>

