<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=19598&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-11-13T14:48:12+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=19598&amp;mode</id>
<entry>
<author><name><![CDATA[keke]]></name></author>
<updated>2017-11-13T14:48:12+01:00</updated>
<published>2017-11-13T14:48:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198862#p198862</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198862#p198862"/>
<title type="html"><![CDATA[Re: Problem z DHT 11]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198862#p198862"><![CDATA[
oto kody <br /><br />dht.h<br />[syntax=c]#ifndef DHT2_H_<br />#define DHT2_H_<br /><br />#include &lt;stdio.h&gt;<br />#include &lt;avr/io.h&gt;<br /><br />//setup port<br />#define DHT1_DDR DDRD<br />#define DHT1_PORT PORTD<br />#define DHT1_PIN PIND<br />#define DHT1_INPUTPIN PD5<br /><br />//sensor type<br />#define DHT1_DHT11 1<br />#define DHT1_DHT22 2<br />#define DHT1_TYPE DHT1_DHT11<br /><br />//enable decimal precision (float)<br />#if DHT1_TYPE == DHT1_DHT11<br />#define DHT1_FLOAT 0<br />#elif DHT1_TYPE == DHT1_DHT22<br />#define DHT1_FLOAT 1<br />#endif<br /><br />//timeout retries<br />#define DHT1_TIMEOUT 200<br /><br />//functions<br />#if DHT1_FLOAT == 1<br />extern int8_t dht_gettemperature1(float *temperature1);<br />extern int8_t dht_gethumidity1(float *humidity1);<br />extern int8_t dht_gettemperaturehumidity1(float *temperature1, float *humidity1);<br />#elif DHT1_FLOAT == 0<br />extern int8_t dht_gettemperature1(int8_t *temperature1);<br />extern int8_t dht_gethumidity1(int8_t *humidity1);<br />extern int8_t dht_gettemperaturehumidity1(int8_t *temperature1, int8_t *humidity1);<br />#endif<br /><br />#endif[/syntax]<br /><br />plik dht.c<br />[syntax=c]#include &lt;stdio.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;dht2.h&quot;<br /><br />/*<br /> * get data from sensor<br /> */<br />#if DHT1_FLOAT == 1<br />int8_t dht_getdata1(float *temperature1, float *humidity1) {<br />#elif DHT1_FLOAT == 0<br />int8_t dht_getdata1(int8_t *temperature1, int8_t *humidity1) {<br />#endif<br />uint8_t bits&#91;5&#93;;<br />uint8_t i,j = 0;<br /><br />memset(bits, 0, sizeof(bits));<br /><br />//reset port<br />DHT1_DDR |= (1&lt;&lt;DHT1_INPUTPIN); //output<br />DHT1_PORT |= (1&lt;&lt;DHT1_INPUTPIN); //high<br />_delay_ms(100);<br /><br />//send request<br />DHT1_PORT &amp;= ~(1&lt;&lt;DHT1_INPUTPIN); //low<br />#if DHT1_TYPE == DHT1_DHT11<br />_delay_ms(18);<br />#elif DHT1_TYPE == DHT1_DHT22<br />_delay_us(500);<br />#endif<br />DHT1_PORT |= (1&lt;&lt;DHT1_INPUTPIN); //high<br />DHT1_DDR &amp;= ~(1&lt;&lt;DHT1_INPUTPIN); //input<br />_delay_us(40);<br /><br />//check start condition 1<br />if((DHT1_PIN &amp; (1&lt;&lt;DHT1_INPUTPIN))) {<br />return -1;<br />}<br />_delay_us(80);<br />//check start condition 2<br />if(!(DHT1_PIN &amp; (1&lt;&lt;DHT1_INPUTPIN))) {<br />return -1;<br />}<br />_delay_us(80);<br /><br />//read the data<br />uint16_t timeoutcounter = 0;<br />for (j=0; j&lt;5; j++) { //read 5 byte<br />uint8_t result=0;<br />for(i=0; i&lt;8; i++) {//read every bit<br />timeoutcounter = 0;<br />while(!(DHT1_PIN &amp; (1&lt;&lt;DHT1_INPUTPIN))) { //wait for an high input (non blocking)<br />timeoutcounter++;<br />if(timeoutcounter &gt; DHT1_TIMEOUT) {<br />return -1; //timeout<br />}<br />}<br />_delay_us(30);<br />if(DHT1_PIN &amp; (1&lt;&lt;DHT1_INPUTPIN)) //if input is high after 30 us, get result<br />result |= (1&lt;&lt;(7-i));<br />timeoutcounter = 0;<br />while(DHT1_PIN &amp; (1&lt;&lt;DHT1_INPUTPIN)) { //wait until input get low (non blocking)<br />timeoutcounter++;<br />if(timeoutcounter &gt; DHT1_TIMEOUT) {<br />return -1; //timeout<br />}<br />}<br />}<br />bits&#91;j&#93; = result;<br />}<br /><br />//reset port<br />DHT1_DDR |= (1&lt;&lt;DHT1_INPUTPIN); //output<br />DHT1_PORT |= (1&lt;&lt;DHT1_INPUTPIN); //low<br />_delay_ms(100);<br /><br />//check checksum<br />if ((uint8_t)(bits&#91;0&#93; + bits&#91;1&#93; + bits&#91;2&#93; + bits&#91;3&#93;) == bits&#91;4&#93;) {<br />//return temperature and humidity<br />#if DHT1_TYPE == DHT1_DHT11<br />*temperature1 = bits&#91;2&#93;;<br />*humidity1 = bits&#91;0&#93;;<br />#elif DHT1_TYPE == DHT1_DHT22<br />uint16_t rawhumidity1 = bits&#91;0&#93;&lt;&lt;8 | bits&#91;1&#93;;<br />uint16_t rawtemperature1 = bits&#91;2&#93;&lt;&lt;8 | bits&#91;3&#93;;<br />if(rawtemperature1 &amp; 0x8000) {<br />*temperature1 = (float)((rawtemperature1 &amp; 0x7FFF) / 10.0) * -1.0;<br />} else {<br />*temperature1 = (float)(rawtemperature1)/10.0;<br />}<br />*humidity1 = (float)(rawhumidity1)/10.0;<br />#endif<br />return 0;<br />}<br /><br />return -1;<br />}<br /><br />/*<br /> * get temperature<br /> */<br />#if DHT1_FLOAT == 1<br />int8_t dht_gettemperature1(float *temperature1) {<br />float humidity1 = 0;<br />#elif DHT_FLOAT == 0<br />int8_t dht_gettemperature1(int8_t *temperature1) {<br />int8_t humidity1 = 0;<br />#endif<br />return dht_getdata1(temperature1, &amp;humidity1);<br />}<br /><br />/*<br /> * get humidity<br /> */<br />#if DHT1_FLOAT == 1<br />int8_t dht_gethumidity1(float *humidity1) {<br />float temperature1 = 0;<br />#elif DHT1_FLOAT == 0<br />int8_t dht_gethumidity1(int8_t *humidity1) {<br />int8_t temperature1 = 0;<br />#endif<br />return dht_getdata(&amp;temperature1, humidity1);<br />}<br /><br />/*<br /> * get temperature and humidity<br /> */<br />#if DHT1_FLOAT == 1<br />int8_t dht_gettemperaturehumidity1(float *temperature1, float *humidity1) {<br />#elif DHT1_FLOAT == 0<br />int8_t dht_gettemperaturehumidity1(int8_t *temperature1, int8_t *humidity1) {<br />#endif<br />return dht_getdata(temperature1, humidity1);<br />}[/syntax]<br /><br />oraz z pliku main.c wycinek odpowiedzialny za wyswietlanie, przekazuje to do wyświetlacza<br />[syntax=c]if(dht_gettemperaturehumidity1(&amp;temperature1, &amp;humidity1) != -1) {<br />itoa(temperature1, t2, 10);<br />itoa(humidity1, w2, 10);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16874">keke</a> — 13 lis 2017, o 14:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[keke]]></name></author>
<updated>2017-11-13T14:14:28+01:00</updated>
<published>2017-11-13T14:14:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198858#p198858</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198858#p198858"/>
<title type="html"><![CDATA[Re: Problem z DHT 11]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198858#p198858"><![CDATA[
Dambo, właśnie tak robiłem, lecz czujnik nie zbiera wartości, w bibliotece zmieniałem wszystkie zmienne żeby się nie powtarzały.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16874">keke</a> — 13 lis 2017, o 14:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2017-11-13T12:53:21+01:00</updated>
<published>2017-11-13T12:53:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198852#p198852</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198852#p198852"/>
<title type="html"><![CDATA[Re: Problem z DHT 11]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198852#p198852"><![CDATA[
Jeden czujnik podłączasz do jednego z pinów , drugi do drugiego i odczytujesz je naprzemiennie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 13 lis 2017, o 12:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[keke]]></name></author>
<updated>2017-11-13T12:42:30+01:00</updated>
<published>2017-11-13T12:42:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198849#p198849</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198849#p198849"/>
<title type="html"><![CDATA[Problem z DHT 11]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19598&amp;p=198849#p198849"><![CDATA[
Witam, posiadam atmegę32 oraz dwa czujniki DTH 11, z podłączeniem jednego nie mam problemu przez gotową bibliotekę , lecz nie wiem jak rozwiązać problem z podłączeniem czujnika drugiego. <br />Mógłby ktoś coś doradzić <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16874">keke</a> — 13 lis 2017, o 12:42</p><hr />
]]></content>
</entry>
</feed>