<?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=8&amp;t=7364&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-06-11T18:45:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=7364&amp;mode</id>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-06-11T18:45:21+01:00</updated>
<published>2014-06-11T18:45:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84160#p84160</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84160#p84160"/>
<title type="html"><![CDATA[Re: Pomiar czujnikiem DHT 22]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84160#p84160"><![CDATA[
Wysłałem Ci na PW<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 11 cze 2014, o 18:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Maverick]]></name></author>
<updated>2014-06-11T18:32:06+01:00</updated>
<published>2014-06-11T18:32:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84157#p84157</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84157#p84157"/>
<title type="html"><![CDATA[Re: Pomiar czujnikiem DHT 22]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84157#p84157"><![CDATA[
W takim razie poproszę. I Dziękuję<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2203">Maverick</a> — 11 cze 2014, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-06-11T18:28:50+01:00</updated>
<published>2014-06-11T18:28:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84155#p84155</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84155#p84155"/>
<title type="html"><![CDATA[Re: Pomiar czujnikiem DHT 22]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84155#p84155"><![CDATA[
A to nie będzie tak samo jak tutaj <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/post83940.html#p83940" >post83940.html#p83940</a><!-- l --> tylko czujnik nowszy? Mogę Ci podesłać na PW program, który u mnie bez problemu działa<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 11 cze 2014, o 18:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Maverick]]></name></author>
<updated>2014-06-11T18:24:06+01:00</updated>
<published>2014-06-11T18:24:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84154#p84154</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84154#p84154"/>
<title type="html"><![CDATA[Re: Pomiar czujnikiem DHT 22]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=84154#p84154"><![CDATA[
A czy jest możliwość dodania polecenia by na wyświetlaczu w przypadku nie wykrycia czujnika pokazywał się error?<br />(TEMPERATURE ERROR<br />HUMIDITY ERROR)<br />jeśli tak jak taka komenda będzie wyglądać i w którym miejscu funcki float ją dodać?<br /><br />[syntax=c]int main(void)<br />{<br />char printbuf&#91;16&#93;;<br /><br />lcd_init();<br /><br /><br />//init interrupt<br />sei();<br /><br /><br />        #if DHT_FLOAT == 1<br />        float temperature = 0;<br />        float humidity = 0;<br />        #endif<br /><br />        for (;;) {<br />                if(dht_gettemperaturehumidity(&amp;temperature, &amp;humidity) != -1)<br /><br />                {<br /><br /><br />        #if DHT_FLOAT == 1<br />        dtostrf(temperature, 3, 1,printbuf);<br /><br />        #endif<br />        lcd_locate(0,0);<br />        lcd_str_P( PSTR(&quot;TEMPERATURE&quot;) );<br />        lcd_locate(0,12);<br />        lcd_str(printbuf);<br />        lcd_locate(0,18);<br />        lcd_str_P( PSTR(&quot;\x82&quot;&quot;C&quot;) );<br /><br />#if DHT_FLOAT == 1<br />        dtostrf(humidity, 3,1 ,printbuf);<br />        #endif<br />        lcd_locate(1,0);<br />        lcd_str_P( PSTR(&quot;HUMIDITY&quot;) );<br />        lcd_locate(1,12);<br />        lcd_str(printbuf);<br />        lcd_locate(1,19);<br />        lcd_str_P( PSTR(&quot;\x83&quot;) );<br /><br />        _delay_ms(500);<br />        }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2203">Maverick</a> — 11 cze 2014, o 18:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-06-09T18:19:23+01:00</updated>
<published>2014-06-09T18:19:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=83869#p83869</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=83869#p83869"/>
<title type="html"><![CDATA[Re: Pomiar czujnikiem DHT 22]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=83869#p83869"><![CDATA[
Należy dołączy bibliotekę wyświetlacza. Wybrać odpowiednie piny w pliku h. W pliku main pozostaje już tylko wrzucić zamiast <em>uart_init(); lcd_init();</em> i każde wysłanie stringu na port szeregowy zastąpić wyświetleniem go na LCD np.<br />[syntax=c]uart_puts(&quot;temperature: &quot;); uart_puts(printbuff); uart_puts(&quot;C&quot;);uart_puts(&quot;\r\n&quot;);[/syntax]<br />zamieniasz na:<br />[syntax=c]lcd_locate(0,0); lcd_str(&quot;temp: &quot;); lcd_str(printbuff); lcd_str(&quot;C&quot;);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 9 cze 2014, o 18:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Maverick]]></name></author>
<updated>2014-06-09T15:26:12+01:00</updated>
<published>2014-06-09T15:26:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=83849#p83849</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=83849#p83849"/>
<title type="html"><![CDATA[Pomiar czujnikiem DHT 22]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7364&amp;p=83849#p83849"><![CDATA[
Witam!<br />Chcę zmierzyć temperaturę i wilgotność powietrza za pomocą czujnika DHT22. Wyniki mają być wyświetlane na wyświetlaczu LCD. Biblioteki LCD i 1wire zostały zaczerpnięte z płyty dołączonej do niebieskiej książki. Czy mógłby mi ktoś pomóc i powiedzieć jak zmienić poniższy kod by wyniki były wyświetlane na wyświetlaczu LCD a nie poprze uart?<br /><br />[syntax=c]int main(void)<br />{<br />char printbuff&#91;100&#93;;<br /><br />//init uart<br />uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );<br /><br />//init interrupt<br />sei();<br /><br /><br />#if DHT_FLOAT == 1<br />float temperature = 0;<br />float humidity = 0;<br />#endif<br /><br />for (;;) {<br />if(dht_gettemperaturehumidity(&amp;temperature, &amp;humidity) != -1) {<br /><br /><br />#if DHT_FLOAT == 1<br />dtostrf(temperature, 3, 3, printbuff);<br />#endif<br />uart_puts(&quot;temperature: &quot;); uart_puts(printbuff); uart_puts(&quot;C&quot;);uart_puts(&quot;\r\n&quot;);<br /><br />#if DHT_FLOAT == 1<br />dtostrf(humidity, 3, 3, printbuff);<br />#endif<br />uart_puts(&quot;humidity: &quot;); uart_puts(printbuff); uart_puts(&quot;%RH&quot;);uart_puts(&quot;\r\n&quot;);<br /><br />} else {<br />uart_puts(&quot;error&quot;); uart_puts(&quot;\r\n&quot;);<br />}<br /><br />uart_puts(&quot;\r\n&quot;);<br /><br />_delay_ms(1500);<br />}<br /><br />return 0;<br />}[/syntax]<br /><br />poniżej załączam również dht22.h i dht.c <br /><br />[syntax=c]* dht22.h<br /><br /><br /><br />#ifndef DHT22_H_<br />#define DHT22_H_<br /><br />#include &lt;stdlib.h&gt;<br />#include &lt;inttypes.h&gt;<br />#include &quot;onewire.h&quot;<br /><br />#define DHT_DDR DDRD<br />#define DHT_PORT PORTD<br />#define DHT_PIN PIND<br />#define DHT_INPUTPIN PD7<br /><br />#define DHT_TYPE DHT_DHT22<br /><br />#if DHT_TYPE == DHT_DHT22<br />#define DHT_FLOAT 1<br />#endif<br /><br />#define DHT_TIMEOUT 200<br /><br /><br />#if DHT_FLOAT == 1<br />extern int8_t dht_gettemperature(float *temperature);<br />extern int8_t dht_gethumidity(float *humidity);<br />extern int8_t dht_gettemperaturehumidity(float *temperature, float *humidity);<br />#endif<br /><br />#endif /* DHT22_H_ */[/syntax]<br /><br />[syntax=c]*<br /> * dht22.c<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;dht22.h&quot;<br />#include &quot;onewire.h&quot;<br />#include &quot;crc8.h&quot;<br /><br />#if DHT_FLOAT == 1<br />int8_t dht_getdata(float *temperature, float *humidity) {<br /><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 />DHT_DDR |= (1&lt;&lt;DHT_INPUTPIN); //output<br />DHT_PORT |= (1&lt;&lt;DHT_INPUTPIN); //high<br />_delay_ms(100);<br /><br />//send request<br /><br />#if DHT_TYPE == DHT_DHT22<br />_delay_us(500);<br />#endif<br />DHT_PORT |= (1&lt;&lt;DHT_INPUTPIN); //high<br />DHT_DDR &amp;= ~(1&lt;&lt;DHT_INPUTPIN); //input<br />_delay_us(40);<br /><br />//check start condition 1<br />if((DHT_PIN &amp; (1&lt;&lt;DHT_INPUTPIN))) {<br />return -1;<br />}<br />_delay_us(80);<br />//check start condition 2<br />if(!(DHT_PIN &amp; (1&lt;&lt;DHT_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(!(DHT_PIN &amp; (1&lt;&lt;DHT_INPUTPIN))) { //wait for an high input (non blocking)<br />timeoutcounter++;<br />if(timeoutcounter &gt; DHT_TIMEOUT) {<br />return -1; //timeout<br />}<br />}<br />_delay_us(30);<br />if(DHT_PIN &amp; (1&lt;&lt;DHT_INPUTPIN)) //if input is high after 30 us, get result<br />result |= (1&lt;&lt;(7-i));<br />timeoutcounter = 0;<br />while(DHT_PIN &amp; (1&lt;&lt;DHT_INPUTPIN)) { //wait until input get low (non blocking)<br />timeoutcounter++;<br />if(timeoutcounter &gt; DHT_TIMEOUT) {<br />return -1; //timeout<br />}<br />}<br />}<br />bits&#91;j&#93; = result;<br />}<br /><br />//reset port<br />DHT_DDR |= (1&lt;&lt;DHT_INPUTPIN); //output<br />DHT_PORT |= (1&lt;&lt;DHT_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 /><br />#if DHT_TYPE == DHT_DHT22<br />uint16_t rawhumidity = bits&#91;0&#93;&lt;&lt;8 | bits&#91;1&#93;;<br />uint16_t rawtemperature = bits&#91;2&#93;&lt;&lt;8 | bits&#91;3&#93;;<br />if(rawtemperature &amp; 0x8000) {<br />*temperature = (float)((rawtemperature &amp; 0x7FFF) / 10.0) * -1.0;<br />} else {<br />*temperature = (float)(rawtemperature)/10.0;<br />}<br />*humidity = (float)(rawhumidity)/10.0;<br />#endif<br />return 0;<br />}<br /><br />return -1;<br />}<br /><br />/*<br /> * get temperature<br /> */<br />#if DHT_FLOAT == 1<br />int8_t dht_gettemperature(float *temperature) {<br />float humidity = 0;<br /><br />#endif<br />return dht_getdata(temperature, &amp;humidity);<br />}<br /><br />/*<br /> * get humidity<br /> */<br />#if DHT_FLOAT == 1<br />int8_t dht_gethumidity(float *humidity) {<br />float temperature = 0;<br /><br />#endif<br />return dht_getdata(&amp;temperature, humidity);<br />}<br /><br />/*<br /> * get temperature and humidity<br /> */<br />#if DHT_FLOAT == 1<br />int8_t dht_gettemperaturehumidity(float *temperature, float *humidity) {<br /><br />#endif<br />return dht_getdata(temperature, humidity);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2203">Maverick</a> — 9 cze 2014, o 15:26</p><hr />
]]></content>
</entry>
</feed>