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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-10-18T20:41:35+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=19408&amp;mode</id>
<entry>
<author><name><![CDATA[padre159]]></name></author>
<updated>2017-10-18T20:41:35+01:00</updated>
<published>2017-10-18T20:41:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197331#p197331</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197331#p197331"/>
<title type="html"><![CDATA[Re: Pętle while]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197331#p197331"><![CDATA[
Właśnie te dwie 1 mi nie pasowało ale zaufałem koledze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> poprawione <br />Zauważyłem że nie napisałem break`a w drugim case dlatego nie chodziło tak jakbym chciał. <br />Poprawione obie rzeczy i śmiga tak jak chciałem. <br />Dziękuję za pomoc a oto finalny kod jeśli ktoś chciałby zerknąć.<br /><br />[syntax=c]while(1)<br />{<br />switch(stan)<br />{<br />case 0:<br />if(SENSOR_ACTIVE)<br />{<br />stan = 1;<br />}<br /><br />if(s1_flag) {/* sprawdzanie flagi tyknięć timera programowego co 1 sekundę */<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 0 sprawdzaj ilość dostępnych czujników */<br />if( 0 == (sekundy%3) ) {<br /><br />uint8_t *cl=(uint8_t*)gSensorIDs;// pobieramy wskaźnik do tablicy adresów czujników<br />for( uint8_t i=0; i&lt;MAXSENSORS*OW_ROMCODE_SIZE; i++) *cl++ = 0; // kasujemy całą tablicę<br />czujniki_cnt = search_sensors();// ponownie wykrywamy ile jest czujników i zapełniamy tablicę<br />lcd_locate(0,8);<br />lcd_int( czujniki_cnt );// wyświetlamy ilość czujników na magistrali<br />}<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 1 wysyłaj rozkaz pomiaru do czujników */<br />if( 1 == (sekundy%3) ) DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 2 czyli jedną sekundę po rozkazie konwersji<br /> *  dokonuj odczytu i wyświetlania temperatur z 2 czujników jeśli są podłączone, jeśli nie<br /> *  to pokaż komunikat o błędzie<br /> */<br /><br />if( 2 == (sekundy%3) )<br />{<br />if( klawisz1()  )<br />{<br />if( licz1 == 0 )<br />{<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;  T1       T2&quot;)); /* wyświetl napisy w zerowej linii LCD */<br />lcd_locate(0,6);<br />lcd_int(licz1);<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(0);<br />else {<br />lcd_locate(1,0);<br />lcd_str(&quot; error &quot;);<br />}<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(9);<br />else {<br />lcd_locate(1,8);<br />lcd_str(&quot; error &quot;);<br />}<br />}<br />else<br />if(licz1 == 1)<br />{<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;  T3       T4&quot;)); /* wyświetl napisy w zerowej linii LCD */<br />lcd_locate(0,6);<br />lcd_int(licz1);<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;2&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(0);<br />else {<br />lcd_locate(1,0);<br />lcd_str(&quot; error &quot;);<br />}<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;3&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(9);<br />else {<br />lcd_locate(1,8);<br />lcd_str(&quot; error &quot;);<br />}<br /> }<br />else<br />if(licz1 == 2)<br />{<br /> lcd_cls();<br /> lcd_locate (0,2);<br /> lcd_str(&quot;czujnik dymu&quot;);<br /> lcd_locate (1,0);<br /> lcd_str(&quot;BRAK ZAGROZENIA!&quot;);<br /> licz1=0;<br />}<br />}<br />}<br />/* zerujemy flagę aby tylko jeden raz w ciągu sekundy wykonać operacje */<br />s1_flag=0;<br />} /* koniec sprawdzania flagi */<br />break; /* koniec pętli pomiarowej*/<br />case 1:<br />if(!SENSOR_ACTIVE)<br />{<br />stan = 0;<br />}<br /><br /> if(SENSOR_ACTIVE)<br /> {<br /> FAN1_ON;<br /> BUZZER_ON;<br /> lcd_cls();<br /> lcd_locate (0,2);<br /> lcd_str(&quot;czujnik dymu&quot;);<br /> lcd_locate (1,1);<br /> lcd_str(&quot;WYKRYTO DYM!!!&quot;);<br /> _delay_ms(500);<br /> }<br /> else<br /> {<br /> BUZZER_OFF;<br /> FAN1_OFF;<br /><br /> }<br /><br /> break;<br />   }<br />     }<br />  }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15713">padre159</a> — 18 paź 2017, o 20:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2017-10-18T20:29:58+01:00</updated>
<published>2017-10-18T20:29:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197329#p197329</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197329#p197329"/>
<title type="html"><![CDATA[Re: Pętle while]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197329#p197329"><![CDATA[
No to poprzednio wstawiłeś inny kod <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br />W miejscu które wskazałeś miałeś<br />[syntax=c]stan = 1;[/syntax]<br />To jak masz w kompilowanym kodzie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 18 paź 2017, o 20:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarecki]]></name></author>
<updated>2017-10-18T13:43:00+01:00</updated>
<published>2017-10-18T13:43:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197304#p197304</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197304#p197304"/>
<title type="html"><![CDATA[Re: Pętle while]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197304#p197304"><![CDATA[
Zobacz to:<br /><br />[syntax=c]while(1)<br />    {<br />            switch(stan)<br />            {<br />            case 0:<br />                    if(SENSOR_ACTIVE)<br />                    {<br />                            stan = 1;<br />                    }<br />     <br />                    if(s1_flag) {   /* sprawdzanie flagi tyknięć timera programowego co 1 sekundę */<br />     <br />                            /* co trzy sekundy gdy reszta z dzielenia modulo 3 == 0 sprawdzaj ilość dostępnych czujników */<br />                            if( 0 == (sekundy%3) ) {<br />     <br />                                    uint8_t *cl=(uint8_t*)gSensorIDs;       // pobieramy wskaźnik do tablicy adresów czujników<br />                                    for( uint8_t i=0; i&lt;MAXSENSORS*OW_ROMCODE_SIZE; i++) *cl++ = 0; // kasujemy całą tablicę<br />                                    czujniki_cnt = search_sensors();        // ponownie wykrywamy ile jest czujników i zapełniamy tablicę<br />                                    lcd_locate(0,8);<br />                                    lcd_int( czujniki_cnt );        // wyświetlamy ilość czujników na magistrali<br />                            }<br />     <br />                            /* co trzy sekundy gdy reszta z dzielenia modulo 3 == 1 wysyłaj rozkaz pomiaru do czujników */<br />                            if( 1 == (sekundy%3) ) DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br />     <br />                            /* co trzy sekundy gdy reszta z dzielenia modulo 3 == 2 czyli jedną sekundę po rozkazie konwersji<br />                             *  dokonuj odczytu i wyświetlania temperatur z 2 czujników jeśli są podłączone, jeśli nie<br />                             *  to pokaż komunikat o błędzie<br />                             */<br />     <br />                            if( 2 == (sekundy%3) )<br />                            {<br />                                    if( klawisz1()  )<br />                                    {<br />                                            if( licz1 == 1 )<br />                                            {<br />                                                    lcd_cls();<br />                                                    lcd_locate(0,0);<br />                                                    lcd_str_P(PSTR(&quot;  T1       T2&quot;)); /* wyświetl napisy w zerowej linii LCD */<br />                                                    lcd_locate(0,6);<br />                                                    lcd_int(licz1);<br />     <br />                                            if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(0);<br />                                            else {<br />                                            lcd_locate(1,0);<br />                                            lcd_str(&quot; error &quot;);<br />                                                    }<br />     <br />                                            if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(9);<br />                                            else {<br />                                                    lcd_locate(1,8);<br />                                                    lcd_str(&quot; error &quot;);<br />                                                    }<br />                                            }<br />                                            else<br />                                                    if(licz1 == 2)<br />                                            {<br />                                                    lcd_cls();<br />                                                    lcd_locate(0,0);<br />                                                    lcd_str_P(PSTR(&quot;  T3       T4&quot;)); /* wyświetl napisy w zerowej linii LCD */<br />                                                    lcd_locate(0,6);<br />                                                    lcd_int(licz1);<br />     <br />                                            if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;2&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(0);<br />                                            else {<br />                                                    lcd_locate(1,0);<br />                                                    lcd_str(&quot; error &quot;);<br />                                                    }<br />     <br />                                            if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;3&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(9);<br />                                            else {<br />                                                    lcd_locate(1,8);<br />                                                    lcd_str(&quot; error &quot;);<br />                                                    }<br />                                             }<br />                                            else<br />                                                            if(licz1 == 3)<br />                                                            {<br />                                                             lcd_cls();<br />                                                             lcd_locate (0,2);<br />                                                             lcd_str(&quot;czujnik dymu&quot;);<br />                                                             lcd_locate (1,0);<br />                                                             lcd_str(&quot;BRAK ZAGROZENIA!&quot;);<br />                                                             licz1=0;<br />                                                            }<br />                                                    }<br />                                            }<br />                                    /* zerujemy flagę aby tylko jeden raz w ciągu sekundy wykonać operacje */<br />                                    s1_flag=0;<br />                            } /* koniec sprawdzania flagi */<br />                    break; /* koniec pętli pomiarowej*/<br />            case 1:<br />                    if(!SENSOR_ACTIVE)<br />                    {<br />                            stan = 0; /* TU JEST ZMIANA*/<br />                    }<br />     <br />                     if(SENSOR_ACTIVE)<br />                     {<br />                             FAN1_ON;<br />                             BUZZER_ON;<br />                             lcd_cls();<br />                             lcd_locate (0,2);<br />                             lcd_str(&quot;czujnik dymu&quot;);<br />                             lcd_locate (1,1);<br />                             lcd_str(&quot;WYKRYTO DYM!!!&quot;);<br />                             _delay_ms(500);<br />                     }<br />                     else<br />                     {<br />                             BUZZER_OFF;<br />                             FAN1_OFF;<br />     <br />                     }<br />     <br />               }<br />         }<br />      }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2511">Jarecki</a> — 18 paź 2017, o 13:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2017-10-18T13:39:45+01:00</updated>
<published>2017-10-18T13:39:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197302#p197302</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197302#p197302"/>
<title type="html"><![CDATA[Re: Pętle while]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197302#p197302"><![CDATA[
A gdzie zerujesz flagę stan?<br />Bez tego nie powróci Ci do wykonywanie pierwszego warunku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 18 paź 2017, o 13:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[padre159]]></name></author>
<updated>2017-10-18T12:50:23+01:00</updated>
<published>2017-10-18T12:50:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197301#p197301</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197301#p197301"/>
<title type="html"><![CDATA[Re: Pętle while]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197301#p197301"><![CDATA[
Spróbuję. <br />Dzięki za szybką odpowiedź <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 28 minutach ]</span></strong><br /><br />Po podpowiedzi kolegi kod wygląda tak. Natomiast nie wyświetla temperatury. Reaguje na gaz włącza wiatrak buzzer i napis po odstawieniu gazu wiatrak i buzzer się wyłączają, napis zostaje i nie ma temp <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br /><br />[syntax=c]while(1)<br />{<br />switch(stan)<br />{<br />case 0:<br />if(SENSOR_ACTIVE)<br />{<br />stan = 1;<br />}<br /><br />if(s1_flag) {/* sprawdzanie flagi tyknięć timera programowego co 1 sekundę */<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 0 sprawdzaj ilość dostępnych czujników */<br />if( 0 == (sekundy%3) ) {<br /><br />uint8_t *cl=(uint8_t*)gSensorIDs;// pobieramy wskaźnik do tablicy adresów czujników<br />for( uint8_t i=0; i&lt;MAXSENSORS*OW_ROMCODE_SIZE; i++) *cl++ = 0; // kasujemy całą tablicę<br />czujniki_cnt = search_sensors();// ponownie wykrywamy ile jest czujników i zapełniamy tablicę<br />lcd_locate(0,8);<br />lcd_int( czujniki_cnt );// wyświetlamy ilość czujników na magistrali<br />}<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 1 wysyłaj rozkaz pomiaru do czujników */<br />if( 1 == (sekundy%3) ) DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 2 czyli jedną sekundę po rozkazie konwersji<br /> *  dokonuj odczytu i wyświetlania temperatur z 2 czujników jeśli są podłączone, jeśli nie<br /> *  to pokaż komunikat o błędzie<br /> */<br /><br />if( 2 == (sekundy%3) )<br />{<br />if( klawisz1()  )<br />{<br />if( licz1 == 1 )<br />{<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;  T1       T2&quot;)); /* wyświetl napisy w zerowej linii LCD */<br />lcd_locate(0,6);<br />lcd_int(licz1);<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(0);<br />else {<br />lcd_locate(1,0);<br />lcd_str(&quot; error &quot;);<br />}<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(9);<br />else {<br />lcd_locate(1,8);<br />lcd_str(&quot; error &quot;);<br />}<br />}<br />else<br />if(licz1 == 2)<br />{<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;  T3       T4&quot;)); /* wyświetl napisy w zerowej linii LCD */<br />lcd_locate(0,6);<br />lcd_int(licz1);<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;2&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(0);<br />else {<br />lcd_locate(1,0);<br />lcd_str(&quot; error &quot;);<br />}<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;3&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(9);<br />else {<br />lcd_locate(1,8);<br />lcd_str(&quot; error &quot;);<br />}<br /> }<br />else<br />if(licz1 == 3)<br />{<br /> lcd_cls();<br /> lcd_locate (0,2);<br /> lcd_str(&quot;czujnik dymu&quot;);<br /> lcd_locate (1,0);<br /> lcd_str(&quot;BRAK ZAGROZENIA!&quot;);<br /> licz1=0;<br />}<br />}<br />}<br />/* zerujemy flagę aby tylko jeden raz w ciągu sekundy wykonać operacje */<br />s1_flag=0;<br />} /* koniec sprawdzania flagi */<br />break; /* koniec pętli pomiarowej*/<br />case 1:<br />if(!SENSOR_ACTIVE)<br />{<br />stan = 1;<br />}<br /><br /> if(SENSOR_ACTIVE)<br /> {<br /> FAN1_ON;<br /> BUZZER_ON;<br /> lcd_cls();<br /> lcd_locate (0,2);<br /> lcd_str(&quot;czujnik dymu&quot;);<br /> lcd_locate (1,1);<br /> lcd_str(&quot;WYKRYTO DYM!!!&quot;);<br /> _delay_ms(500);<br /> }<br /> else<br /> {<br /> BUZZER_OFF;<br /> FAN1_OFF;<br /><br /> }<br /><br />   }<br />     }<br />  }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15713">padre159</a> — 18 paź 2017, o 12:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarecki]]></name></author>
<updated>2017-10-18T12:45:20+01:00</updated>
<published>2017-10-18T12:45:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197300#p197300</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197300#p197300"/>
<title type="html"><![CDATA[Re: Pętle while]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197300#p197300"><![CDATA[
Zrób tak:<br /><br />[syntax=c]uint8_t stan = 0; /* 0 - czesc pierwsza, 1- czesc druga programu */<br /><br />int main(void)<br />{<br /><br /><br />  while(1)<br />  {<br /><br />    switch(stan )<br />    {<br />    case 0:<br /><br />    if(wykryto_gaz)<br />    {<br />        stan = 1;<br />    }<br /><br />/*<br />     Czesc pierwsza programu<br />*/<br /><br />    break;<br /><br />case 1:<br /><br />    if(brak_gazu)<br />    {<br />    stan = 1;<br />    }<br /><br />/*<br />     Czesc druga programu<br />*/<br /><br />    break; <br />    }/* switch */<br />  }/* while */<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2511">Jarecki</a> — 18 paź 2017, o 12:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[padre159]]></name></author>
<updated>2017-10-18T12:38:19+01:00</updated>
<published>2017-10-18T12:38:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197299#p197299</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197299#p197299"/>
<title type="html"><![CDATA[Pętle while]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19408&amp;p=197299#p197299"><![CDATA[
Witam <br />Mam zagwostkę z 2 pętlami while. <br />Mianowicie mam sobie jedną pętlę która mierzy temp i ją wyświetla. Projekt 1_Wire Pana Mirka (chyba większości znany) <br />I teraz dołożyłem do tego czujnik gazów MQ2. W tej pierwszej pętli jako głównej dołożyłem if`a sprawdzajacego stan czujnika i w razie wykrycia gazu przejście do drugiej pętli while która realizuje załączenie wentylatora buzzera i napis na wyświetlaczu. <br />Po zaniku gazu nie mogę wrócić do poprzedniej pętli... Czasem nawet nie przeskakuje do tej drugiej po wykryciu gazu<br />Wykombinowałem to sobie tak <br /><br />[syntax=c]while(x==1)<br />{<br />if(SENSOR_ACTIVE)<br />{<br />x++;<br />}<br /><br />if(s1_flag) {/* sprawdzanie flagi tyknięć timera programowego co 1 sekundę */<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 0 sprawdzaj ilość dostępnych czujników */<br />if( 0 == (sekundy%3) ) {<br /><br />uint8_t *cl=(uint8_t*)gSensorIDs;// pobieramy wskaźnik do tablicy adresów czujników<br />for( uint8_t i=0; i&lt;MAXSENSORS*OW_ROMCODE_SIZE; i++) *cl++ = 0; // kasujemy całą tablicę<br />czujniki_cnt = search_sensors();// ponownie wykrywamy ile jest czujników i zapełniamy tablicę<br />lcd_locate(0,8);<br />lcd_int( czujniki_cnt );// wyświetlamy ilość czujników na magistrali<br />}<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 1 wysyłaj rozkaz pomiaru do czujników */<br />if( 1 == (sekundy%3) ) DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 2 czyli jedną sekundę po rozkazie konwersji<br /> *  dokonuj odczytu i wyświetlania temperatur z 2 czujników jeśli są podłączone, jeśli nie<br /> *  to pokaż komunikat o błędzie<br /> */<br /><br />if( 2 == (sekundy%3) )<br />{<br />if( klawisz1()  )<br />{<br />if( licz1 == 1 )<br />{<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;  T1       T2&quot;)); /* wyświetl napisy w zerowej linii LCD */<br />lcd_locate(0,6);<br />lcd_int(licz1);<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(0);<br />else {<br />lcd_locate(1,0);<br />lcd_str(&quot; error &quot;);<br />}<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(9);<br />else {<br />lcd_locate(1,8);<br />lcd_str(&quot; error &quot;);<br />}<br />}<br />else<br />if(licz1 == 2)<br />{<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;  T3       T4&quot;)); /* wyświetl napisy w zerowej linii LCD */<br />lcd_locate(0,6);<br />lcd_int(licz1);<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;2&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(0);<br />else {<br />lcd_locate(1,0);<br />lcd_str(&quot; error &quot;);<br />}<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;3&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(9);<br />else {<br />lcd_locate(1,8);<br />lcd_str(&quot; error &quot;);<br />}<br /> }<br />else<br />if(licz1 == 3)<br />{<br /> lcd_cls();<br /> lcd_locate (0,2);<br /> lcd_str(&quot;czujnik dymu&quot;);<br /> lcd_locate (1,0);<br /> lcd_str(&quot;BRAK ZAGROZENIA!&quot;);<br /> licz1=0;<br />}<br />}<br />}<br />/* zerujemy flagę aby tylko jeden raz w ciągu sekundy wykonać operacje */<br />s1_flag=0;<br />} /* koniec sprawdzania flagi */<br />} /* koniec pętli pomiarowej*/<br /><br /> while( x == 2 )<br />   {<br /> if(SENSOR_ACTIVE)<br /> {<br /> FAN1_ON;<br /> BUZZER_ON;<br /> lcd_cls();<br /> lcd_locate (0,2);<br /> lcd_str(&quot;czujnik dymu&quot;);<br /> lcd_locate (1,1);<br /> lcd_str(&quot;WYKRYTO DYM!!!&quot;);<br /> _delay_ms(500);<br /> }<br /> else<br /> {<br /> BUZZER_OFF;<br /> FAN1_OFF;<br /> x = 1;<br /> }<br /><br />   }<br />   }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15713">padre159</a> — 18 paź 2017, o 12:38</p><hr />
]]></content>
</entry>
</feed>