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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-11-21T11:55:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=21547&amp;mode</id>
<entry>
<author><name><![CDATA[KampoPampo]]></name></author>
<updated>2018-11-21T11:55:16+01:00</updated>
<published>2018-11-21T11:55:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213883#p213883</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213883#p213883"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213883#p213883"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Zrób tryb debugowania na lcd. Wyślij tam wszystkie istotne zmienne na czas testów i obserwuj co się dzieje. Ja tak robię z każdym bardziej skomplikowanym programem, a i w prostszych też szybko można zlokalizować błąd - np. jeśli coś pisze pod tiny13 to najpierw pisze to na mega32 z lcd i jeśli algorytm działa dopiero robię konwersję na inny procek.<br /></div><br /><br />Sprawdziłem tym sposobem co się dzieje ze zmiennymi result, wilg i inne. Wartość wpisana z klawiatury jak i z czujnika wpisują się i pokazują poprawnie, więc nie wiem gdzie leży problem z odczytem wartości.<br /><br />Może zapisuje zły warunek, który ma za zadanie działać według wskazań czujnika i zmiennej result.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18498">KampoPampo</a> — 21 lis 2018, o 11:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2018-11-15T15:29:52+01:00</updated>
<published>2018-11-15T15:29:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213763#p213763</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213763#p213763"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213763#p213763"><![CDATA[
Zrób tryb debugowania na lcd. Wyślij tam wszystkie istotne zmienne na czas testów i obserwuj co się dzieje. Ja tak robię z każdym bardziej skomplikowanym programem, a i w prostszych też szybko można zlokalizować błąd - np. jeśli coś pisze pod tiny13 to najpierw pisze to na mega32 z lcd i jeśli algorytm działa dopiero robię konwersję na inny procek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 15 lis 2018, o 15:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KampoPampo]]></name></author>
<updated>2018-11-15T15:16:24+01:00</updated>
<published>2018-11-15T15:16:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213762#p213762</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213762#p213762"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213762#p213762"><![CDATA[
Próbowałem dodać jakieś usprawnienia, ale problem cały czas jest ten sam, gdyż po zatwierdzeniu jakiejkolwiek wartości z klawiatury (od 1 do 100) pompka włącza się i działa cały czas nie reagując na Zmiany wartości wilgotności. Chciałbym wiedzieć o co chodzi, ale nie wiem. Jest ktoś w stanie podrzucić jakąś wskazówkę, bo na razie nie daje rady tego rozwiązać. Bardzo dziękuję za wcześniejsze odpowiedzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18498">KampoPampo</a> — 15 lis 2018, o 15:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KampoPampo]]></name></author>
<updated>2018-11-12T10:35:15+01:00</updated>
<published>2018-11-12T10:35:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213644#p213644</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213644#p213644"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213644#p213644"><![CDATA[
<div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />witam,<br /><div class="quotetitle">KampoPampo napisał(a):</div><div class="quotecontent">[syntax=c]void check_result(int result)<br />        {<br />        result = liczba; //instrukcja sprawdzająca wprowadzony wynik<br />        }[/syntax]<br /></div><br />czy nie chodzilo o <br />[syntax=c]void check_result(int liczba) // ? liczba wprowadzona z klawiatury. ?<br />        {<br />        result = liczba;  // zapis liczby do zmiennej result ?  liczba jest argumentem funkcji. a nie result. hmm.. ?<br />        <br />        }[/syntax]<br />trochę miesza mi się.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /></div><br /><br /><br />Początkowo było tak i spełniało swoje działanie, ale dodałem zmienna liczba, bo myślałem, że to pomoże jakoś w odczycie wyniku z result.<br /><br />[syntax=c]void check_result(int result)<br />        {<br />   //instrukcja sprawdzająca wprowadzony wynik<br />        }[/syntax]<br /><br />Za bardzo utrudniam. Proszę o wybaczenie  <img src="https://forum.atnel.pl/images/smilies/icon_cry.gif" alt=":cry:" title="Płacze" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18498">KampoPampo</a> — 12 lis 2018, o 10:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-11-11T22:01:45+01:00</updated>
<published>2018-11-11T22:01:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213643#p213643</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213643#p213643"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213643#p213643"><![CDATA[
witam,<br /><div class="quotetitle">KampoPampo napisał(a):</div><div class="quotecontent"><br />[syntax=c]void check_result(int result)<br />        {<br />        result = liczba; //instrukcja sprawdzająca wprowadzony wynik<br />        }[/syntax]<br /></div><br />czy nie chodzilo o <br />[syntax=c]void check_result(int liczba) // ? liczba wprowadzona z klawiatury. ?<br />        {<br />        result = liczba;  // zapis liczby do zmiennej result ?  liczba jest argumentem funkcji. a nie result. hmm.. ?<br />        <br />        }[/syntax]<br />trochę miesza mi się.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 11 lis 2018, o 22:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2018-11-11T21:58:55+01:00</updated>
<published>2018-11-11T21:58:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213642#p213642</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213642#p213642"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213642#p213642"><![CDATA[
Porównujesz tam widzę &quot;wilg i liczba&quot;, a nie widzę aby result był przepisany do zmiennej liczba. Tak ma być?<br />Sorki, ale strasznie chaotycznie wydaje mi się napisany program i jego analiza jest po prostu koszmarna jak dla mnie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 11 lis 2018, o 21:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KampoPampo]]></name></author>
<updated>2018-11-11T21:48:40+01:00</updated>
<published>2018-11-11T21:48:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213641#p213641</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213641#p213641"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213641#p213641"><![CDATA[
Funkcja check_result jest po to, aby wartość wpisana i zatwierdzona na klawiaturze, została zapisana do zmiennej. Przetestowałem tę opcje i działa dobrze.<br />read_key stworzyłem tak, żeby odczytywało wartość z klawiatury, może na switchach byłoby łatwiej ale jakoś się nad tym nie skupiałem, ponieważ nie sądziłem, że może wpływać na opisany przeze mnie problem.<br />Instrukcje goto wiem, że jest beznadziejnym rozwiązaniem, ale użyłem to po to, żeby poruszać się łatwo po menu (powrót do głównego menu oraz powrót do początku wyboru wilgotnosci.<br /><br />Teraz o działaniu programu. Działanie jego ma być następujące. Z głównego menu wybieram opcje A - podlewanie zależne od wilgotnosci. Przechodzę do punktu menu WILGOTNOŚĆ i program prosi mnie o wpisanie wartości wilgotności (wartość zapisuje się do result, czujnik podłączony pod ADC). Zatwierdzam liczbe i program uruchamia pompkę jeśli wartość wilgotności na czujniku jest mniejsza od wpisanej. I tak cały czas do zatrzymania działania.<br /><br />To działa jako wykasowanie danych.<br /><br />[syntax=c]if(key==16)<br />                                                                {<br />                                                                goto skok1;<br />                                                                }[/syntax]<br /><br />A to jest powrót do głównego menu<br /><br />[syntax=c]if(key == 13)<br />             {<br /><br />             _delay_ms(400);<br />             goto skok;<br />             }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18498">KampoPampo</a> — 11 lis 2018, o 21:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-11-11T20:58:11+01:00</updated>
<published>2018-11-11T20:58:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213640#p213640</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213640#p213640"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213640#p213640"><![CDATA[
Zerknąłem w kod...<br />Po co funkcja check_result?<br />Funkcję read_key można by zrobić na instrukcji switch, mam wrażenie, że byłoby łatwiej.<br />Tak, jak pisałem wcześniej, zrezygnowałbym z instrukcji goto, to zły nawyk.<br />Napisz, jak ma program działać, może napiszemy go w inny sposób?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 11 lis 2018, o 20:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-11-11T16:07:37+01:00</updated>
<published>2018-11-11T16:07:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213633#p213633</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213633#p213633"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213633#p213633"><![CDATA[
I pamiętaj że jedno '=' oznacza przypisanie w języku C!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 11 lis 2018, o 16:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2018-11-11T14:55:20+01:00</updated>
<published>2018-11-11T14:55:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213632#p213632</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213632#p213632"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213632#p213632"><![CDATA[
Zobacz jeszcze raz mój post. Tam nie ma porównania zmiennej samej ze sobą. Te operatory logiczne powodują, że porównania ze zmienną użytą w warunku za każdym razem jest osobnym działaniem. Nie wiem jak Ci to prościej wytłumaczyć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 11 lis 2018, o 14:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2018-11-11T14:19:06+01:00</updated>
<published>2018-11-11T14:19:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213630#p213630</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213630#p213630"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213630#p213630"><![CDATA[
Dostało mi się ale to nic przynajmniej jakoś się ten post rozruszał<br /><br />Ale i dobrze bo i dla mnie z tego jakaś nauka wypłynie<br /><br />wytłumaczcie mi jak można porównać jedną i tą samą zmienną z nią samą, nawet gdyby zmieniała<br />się jej wartość? <br /><br />dla jasności  zmienna    result = result   wartość z lewej strony będzie się równała wartości z prawej str.<br />dla mnie to wygląda tak mam zmienną resuit o wartości 5 i teraz to porównaj  - ale z czym z nią samą <br />jeśli nawet porównam z nią samą to zawsze będzie równa samej sobie - masło maślane<br /><br />gdybym przyjął do porównania    result  porównaj z result_1  to są dwie różne zmienne które można porównać i to jest OK<br /><br />Czy znowu się mylę?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 11 lis 2018, o 14:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KampoPampo]]></name></author>
<updated>2018-11-11T12:16:37+01:00</updated>
<published>2018-11-11T12:16:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213626#p213626</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213626#p213626"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213626#p213626"><![CDATA[
Dałem ciała i dyskusja poszła w inną stronę, ale nie uważam, że podpowiedzi odnośnie ustawiania warunków są złe. Zacznę od zawarcia kilku istotnych funkcji, które  mogą wyjaśnić wam przyczynę mojego problemu, bo tak jak było podane, nawet ze szklanej kuli się tego nie wyczyta.. Czy coś.. <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br /><br />Funkcja check_result()<br />[syntax=c]void check_result(int result)<br />{<br />result = liczba; //instrukcja sprawdzająca wprowadzony wynik<br />}[/syntax]<br /><br />Rozpisanie działania klawiszy ze zmienną a<br />[syntax=c]int read_key ()<br />{<br /><br />int key = read_keypad();<br /><br />if(key == 12)<br />{<br /><br />return key;<br />}<br />if(key == 13)<br />{<br />        return key;<br />}<br /><br />if(key == 15)<br /><br />{<br /><br />        return key;<br /><br />}<br /><br />if(key == 16)<br />{<br /><br />        return key;<br />}<br />if(key == 1)<br />{<br />a=1;<br />        return key;<br />}<br />if(key == 2)<br />{<br />a=2;<br />        return key;<br />}<br />if(key == 3)<br />{<br />a=3;<br />        return key;<br />}<br />if(key == 5)<br />{<br />a=4;<br />        return key;<br />}<br />if(key == 6)<br />{<br />a=5;<br />        return key;<br />}<br />if(key == 7)<br />{<br />a=6;<br />        return key;<br />}<br />if(key == 9)<br />{<br />a=7;<br />        return key;<br />}<br />if(key == 10)<br />{<br />a=8;<br />        return key;<br />}<br />if(key == 11)<br />{<br />a=9;<br />        return key;<br />}<br />if(key == 14)<br />{<br />a=0;<br />        return key;<br />}<br /><br />return -1;<br />}[/syntax]<br /><br />Funkcja read_keypad() sprawdza kolejno wszystkie przyciski klawiatury i zwraca numer pierwszego wciśniętego przycisku, albo zero, gdy żaden przycisk nie został wciśnięty. Jest to instrukcja działania klawiatury matrycowej.<br /><br />Funkcji ADC nie dodaje bo to, sam odczyt z adc jest prawidłowy, jednakże może gdzieś jest problem z wartością wilg.<br />[syntax=c]adc_value = ADC_odczyt();// wpisanie wartości odczytanej z adc do zmiennej adc_value<br />wilg = 100-(adc_value *100.00)/1023.00;       // przetwarzanie pomiaru na %, 1023-100%[/syntax]<br /><br />Pętla główna<br />[syntax=c]int main(void)<br />{<br />/* Konfiguracja portów we/wy */<br />  ADC_set();<br /><br />  klaw_init();<br /><br />   lcd_init();<br /><br />   czuj();<br />   zbiornik();<br /><br />   lcd_cls();<br />   read_keypad();<br />//zmienna wilgotnosc typu zmiennoprzecinkowego<br />               //wywołanie funkcji ADC<br />   char array&#91;10&#93;;<br /><br />sei();  //Włączenie przerwań<br /><br />skok:<br /><br />   lcd_locate(0,0);<br />   lcd_str(&quot;MENU ZWD: A-WILG&quot;);<br />   lcd_locate(1,0);<br />   lcd_str(&quot;B-CZAS C-KON.AW.&quot;);<br /><br />//lcd_locate(0,0);<br />//lcd_str(&quot;****MENU ZWD****&quot;);<br /><br />//for(i=1; i&lt;=3; ++i)<br />//{<br />//<br />//if(i==1){<br />//lcd_locate(1,0);<br />//lcd_str(&quot;A-WILG B-CZAS...&quot;);<br />//_delay_ms(2000);<br />//}<br />//<br />//if(i==2){<br />//lcd_locate(1,0);<br />//lcd_str(&quot;C-KON.AW. D-USUN&quot;);<br />//_delay_ms(2000);<br />//}<br />//if(i==3){<br />//lcd_locate(1,0);<br />//lcd_str(&quot;*-MENU #-WPISZ..&quot;);<br />//_delay_ms(2000);<br />//i=0;<br />//}<br />//}<br /><br /><br />   /* Nieskończona pętla */<br /><br />  // for(;;)<br /><br />for(;;)<br /> if(key = read_keypad())<br /> {<br /><br /><br /> if(key == 4)<br /> {<br /><br /> //wilgotnosc<br /><br />   _delay_ms(400);<br />   skok1:<br />   lcd_cls();<br />   lcd_locate(0,0);<br />     // lcd_cls();<br />   lcd_str(&quot;Wilgotnosc:     &quot;);<br /><br />   int result = 0;<br />         while (true) {<br /><br />          adc_value = ADC_odczyt();// wpisanie wartości odczytanej z adc do zmiennej adc_value<br />          wilg = 100-(adc_value *100.00)/1023.00;       // przetwarzanie pomiaru na %, 1023-100%<br />         dtostrf(wilg,2,0,array);       //konwertowanie liczby na tekst<br />         lcd_locate(1,0);<br />         lcd_str(array);<br />          _delay_us(500);//<br /><br />//       if(wilg &gt; liczba)<br />//       {<br />//       //PORTC &amp;= ~(1&lt;&lt;PC7); //przed wpisaniem dziala, po nie<br />//<br />//       PORTA |= (1&lt;&lt;PA3);<br />//       }<br />//<br />//       if (wilg &lt;= liczba)<br />//       {<br />//       //PORTC |= (1&lt;&lt;PC7);<br />//       PORTA &amp;= ~(1&lt;&lt;PA3);<br />//       }<br /><br />            int key = read_key();<br />             if (key != -1) {<br /><br />            if(key==16)<br />           {<br />           goto skok1;<br />           }<br />             if(key == 13)<br />             {<br /><br />             _delay_ms(400);<br />             goto skok;<br />             }<br /><br />                 if (key == 15)<br />                 {<br /><br />                    // lcd_cls();<br />                 if(result&gt;0 &amp;&amp; result&lt;=100)<br />                 {<br /><br />                     check_result(result);<br />                     result = 0;<br /><br />                 }<br /><br />                 else {<br />                 lcd_locate(0,0);<br />                 lcd_str(&quot;******BLAD******&quot;);<br />                 lcd_locate(1,0);<br />                 lcd_str(&quot;SPROBOJ PONOWNIE&quot;);<br />                 _delay_ms(2000);<br />                 goto skok1;<br />                 }<br /><br />                 lcd_cls();<br />                lcd_locate(0,0);<br />                      // lcd_cls();<br />                lcd_str(&quot; START  PODLEW. &quot;);<br />                lcd_locate(1,0);<br />                lcd_str(&quot;################&quot;);<br /><br />                 }<br /><br />                 else<br />                 {<br />                     result = result * 10 + a; //key;<br />                     //result = liczba;<br />                     lcd_locate(0,12);<br />                     //lcd_int(result);<br />                     lcd_int(result);<br />                     lcd_locate(0,15);<br />                     lcd_str(&quot; &quot;);<br /><br /><br />                 }<br />            if(wilg &gt;= liczba)<br />                           {<br />                           PORTA |= (1&lt;&lt;PA3);<br />                           }<br /><br />               else<br />                           {<br />                           PORTA &amp;= ~(1&lt;&lt;PA3);<br />                           }<br /><br />             }<br /><br />         }<br /><br />       lcd_cls();<br />       lcd_locate(0,12);<br />       lcd_int(result);//result * 10 +<br /><br /><br />   }<br />_delay_us(100);<br />}<br />return 0;<br />}[/syntax]<br /><br />Zmienne<br /><br />[syntax=c]int i, a=0, czas, poziom = 0, adc_value, liczba;<br /><br />double wilg;[/syntax]<br /><br />Mam nadzieję, że nic nie pominąłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18498">KampoPampo</a> — 11 lis 2018, o 12:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2018-11-10T20:50:41+01:00</updated>
<published>2018-11-10T20:50:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213615#p213615</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213615#p213615"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213615#p213615"><![CDATA[
Albo jeszcze inaczej. Dwa warunki, a pomiędzy nimi &quot;&amp;&amp;&quot; można rozbić na sekwencję jak poniżej czyli warunek zagnieżdżony:<br /><br />[syntax=c]if (result&gt;0)<br /> {<br />  if(result &lt;=100)<br />   {<br />     zrób coś tam; // bo zakres 1-100 spełniony<br />    }<br />  }[/syntax]<br />Natomiast w przypadku znaku &quot;||&quot; mamy coś takiego:<br /><br /><br />[syntax=c]if (result&gt;0)<br /> {<br />   zrób coś tam; // bo zakres &gt;0 spełniony;<br /> }<br />if (result&lt;=100)<br /> {<br />   zrób coś tam; // bo &lt;=100 spełniony;<br /> }[/syntax]<br /><br />Widać subtelną różnicę?<br /><br />W drugim przypadku każde badanie uruchamia wykonanie &quot;czegoś tam&quot;, a w pierwszym tylko jeśli faktycznie jeśli będzie zakres spełniony.<br /><br />Swoją drogą takie rozbijanie warunków &quot;AND&quot; w Bascomie na pojedyncze bardzo zmniejszał kod. Nie wiedzieć czemu normalne użycie AND w jednej linii koszmarnie wydłużał program.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 10 lis 2018, o 20:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-11-10T20:20:50+01:00</updated>
<published>2018-11-10T20:20:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213614#p213614</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213614#p213614"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213614#p213614"><![CDATA[
kolego miki53, tego, co napisałem wcześniej, jestem w 100% pewny. Zauważ, że sprawdzasz, czy zmienna result jest w przedziale od 0 do 100. Więc sprawdzasz oba warunki z operatorem &amp;&amp;.<br />Tak, żeby przybliżyć:<br />result &gt; 0 &amp;&amp; result &lt;= 100:<br />Sprawdźmy dla kilku liczb:<br />5: 5 &gt; 0 &amp;&amp; 5 &lt;= 100  -&gt; wartość logiczna prawda (prawda and prawda = prawda)<br />99: 99 &gt; 0 &amp;&amp; 99 &lt;= 100 -&gt; wartość logiczna prawda (prawda and prawda = prawda)<br />101 : 101 &gt; 0 &amp;&amp; 101 &lt;= 100 -&gt; wartość logiczna fałsz (prawda and fałsz = fałsz)<br />A teraz result &gt; 0 || result &lt;= 100:<br />5: 5 &gt; 0 || 5 &lt;= 100  -&gt; wartość logiczna prawda (prawda or prawda = prawda)<br />101: 101 &gt; 0 || 101 &lt;= 100 -&gt; wartość logiczna nadal prawda (prawda or fałsz = prawda)<br />Też tego kiedyś tego nie rozumiałem. Ale tak to działa. I działa dobrze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 10 lis 2018, o 20:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2018-11-10T15:40:46+01:00</updated>
<published>2018-11-10T15:40:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213608#p213608</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213608#p213608"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213608#p213608"><![CDATA[
No nie, co za bzdury... Jeśli wstawi tam &quot;lub&quot; to każda wartość łapie się w warunek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 10 lis 2018, o 15:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2018-11-10T14:34:54+01:00</updated>
<published>2018-11-10T14:34:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213607#p213607</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213607#p213607"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213607#p213607"><![CDATA[
Kolego KampoPampo<br /><br />na samym początku zmień warunek   if (result&gt;0 &amp;&amp; result &lt;=100) czyli  if (result&gt;0 i result &lt;=100)<br />jak widzisz ta sama zmienna jest porównywana  nie może przyjąć -- dwóch -- równych wartości w tym samym czasie<br />bo to jest jedna i ta sama zmienna a nie dwie różne zmienne które chcesz porównać<br />warunek zawsze będzie nie spełniony<br /><br />zamień go na warunek  if (result&gt;0 || result &lt;=100) czyli  if (result&gt;0 lub result &lt;=100) <br />warunek będzie spełniony jeśli zmienna result będzie większa od 0 -- lub -- mniejsza lub równa  100<br /><br /><br />przyjrzyj się jeszcze warunkowi  if ( wilg &gt;= liczba )  jaka jest wartość zmiennej  - wilg -  i zmiennej - liczba -<br />dlaczego ten warunek Ci przepuszcza i włącza pompkę <br /><br />Na razie tylko tyle mogę pomóc może gdybyś wstawił większy fragment kodu to mógłbym pomóc bardziej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 10 lis 2018, o 14:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-11-10T21:21:40+01:00</updated>
<published>2018-11-10T09:13:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213599#p213599</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213599#p213599"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213599#p213599"><![CDATA[
Witam,<br />Podpowiem.<br />if( a &gt; 0 &amp;&amp; a &lt;=100) // zamień operator logiczny &amp;&amp; na wyraz 'jednocześnie, oraz, także..'. oba przyrównanie muszą być spełnione jednocześnie.<br />if( a &gt; 0 || a &lt; 100) // zamień operator na wyraz ' albo, lub, ewentualnie'. musi być spełnione co najmniej jedno przyrównanie, mogą oba.<br />Pozdrawiam<br />.........................................20:10.10/11/2018..................................<br />dopiszę jeszcze w tym poście bo szkoda miejsca.<br />w pierwszym if'ie, warunek jest spełniony dla 'a' większego od '0' ale nie większego od '100'. !!!<br />w drugim if'ie, warunek jest spełniony zawsze. (tak jak niżej napisał kolega &quot;<strong>SylwekK</strong>&quot; ). ponieważ każda wartość jest albo większa od 0, albo mniejsza równa 100. a ten if sprawdza czy a &gt; 0(czy jest liczbą dodatnią). Jeżeli nawet nie jest, to jeszcze sprawdza bo być może jest mniejsze równe 100.<br />@miki53, napisz wartość która nie jest większa od 0 i jednocześnie nie jest mniejsza równa od 100.  <img src="https://forum.atnel.pl/images/smilies/icon_idea.gif" alt=":idea:" title="Pomysł" /> <br /><br />Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka<br />.........................................21:17 10/11/2018...................................<br />żeby nie zaśmiecać wątku - konsekwentnie w tym poście dografuję, może pomoże. choć to i tak off top wątku.  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> <br /><a href="https://obrazkiforum.atnel.pl/11549/2fece1d85c8537f148a9826011e134e3.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/2fece1d85c8537f148a9826011e134e3.PNG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 10 lis 2018, o 09:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2018-11-10T02:09:02+01:00</updated>
<published>2018-11-10T02:09:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213595#p213595</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213595#p213595"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213595#p213595"><![CDATA[
Witam kolegę  Marhef <br /><br />chciałbym się zapytać czy na pewno ten warunek który napisał <br />kolega KampoPampo w swoim kodzie jest poprawny ?<br />bo jeśli nie to nie przeczytałeś uważnie mojego postu<br /><br /> if (result&gt;0 &amp;&amp; result &lt;=100)<br /><br />Myślę że w ten sposób nie można porównywać tą samą zmienną<br />z różnymi wartościami ?<br /><br />Ale to tylko moja opinia<br /> <br />Tak się pytam dla własnej nauki i wiedzy<br /><br />Reszta kodu jest mało czytelna i fragmentaryczna trudna do przeanalizowania <br />jak wspomniał kolega Daro69<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 10 lis 2018, o 02:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-11-09T18:27:12+01:00</updated>
<published>2018-11-09T18:27:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213586#p213586</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213586#p213586"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213586#p213586"><![CDATA[
prawie 200 wyświetleń i żadnej konkretnej podpowiedzi.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br />Powodem jest mało czytelny kod.<br />nie widzę np. dokąd prowadzi nieszczęsne &quot;goto skok;&quot;.<br />nie widać wartości liczba.<br />bardzo ciężko przeanalizować - nawet ze szklaną kulą.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 9 lis 2018, o 18:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-11-09T15:51:43+01:00</updated>
<published>2018-11-09T15:51:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213583#p213583</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213583#p213583"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213583#p213583"><![CDATA[
<div class="quotetitle">miki53 napisał(a):</div><div class="quotecontent"><br />ak myślisz nie powinno to wyglądać tak if (result&gt;0 || result &lt;=100)<br />co oznacza jeśli result jest większy od 0 lub result jest mniejszy lub równy 100<br /></div>Ale ten warunek &quot;łapie&quot; również wartości mniejsze od zera (bo spełniają warunek result &lt;= 100) i większe od 100 (no bo przecież 101 jest większe od 0).<br />Tak że ten warunek zapisany przez kolegę <strong>@KampoPampo</strong> jest dobrze zapisany.<br /><br />Natomiast reszty kodu nie rozumiem... strasznie chaotycznie to napisane... brakuje funkcji check_result(result)... brakuje pętli głównej programu... co to za zmienna liczba? A a? dałoby się uniknąć instrukcji goto (swoją drogą baaardzo zły nawyk)... wielokrotnie zagnieżdżone warunki - i może gdzieś w tym zagnieżdżeniu jest problem, ale nie umiem go znaleźć<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 9 lis 2018, o 15:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2018-11-10T15:14:02+01:00</updated>
<published>2018-11-09T15:11:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213582#p213582</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213582#p213582"/>
<title type="html"><![CDATA[Re: Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213582#p213582"><![CDATA[
Witaj KampoPampo<br /><br />Nie jestem mocny w te klocki ale postaram się Ci pomóc<br />tak przeglądałem twój kod i wpadł mi w oko pewien fragment twojego kodu <br /><br />[syntax=c]if(result&gt;0 &amp;&amp; result&lt;=100) // result to liczba ktora zapisuje sie pod wplywem wprowadzania liczby przez klawiature[/syntax]<br /><br />nie uważasz że ten if jest dziwny bo oznacza  -  jeśli result jest większy od 0 i result jest mniejszy lub równy 100 <br />dla mnie to niewiadoma tak jak myślę dla procka również bo jaka ta zmienna ma być albo większa od 0 albo mniejsza lub równa 100<br />i z czym porównać skoro to ta sama zmienna<br /><br />jak myślisz nie powinno to wyglądać tak if (result&gt;0 || result &lt;=100)<br />co oznacza jeśli result jest większy od 0 lub result jest mniejszy lub równy 100<br /><br />troszkę więcej w tym sensu jak myślisz?<br />Wybacz za wymądrzanie się początkującego<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 9 lis 2018, o 15:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KampoPampo]]></name></author>
<updated>2018-11-08T12:53:28+01:00</updated>
<published>2018-11-08T12:53:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213558#p213558</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213558#p213558"/>
<title type="html"><![CDATA[Sterowanie pompka, ADC, Klawiatura 4x4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21547&amp;p=213558#p213558"><![CDATA[
Witam.<br /><br />Chce dodać opcje, która będzie uruchamiać / wyłączać pompke przy odpowiednich warunkach. Wpisuje liczbe i od razu włącza mi się pompka (nawet nie zatwierdzę i działa ciągle, nawet jak wracam do głównego menu), a moim celem jest żeby pompka działała zależnie od wilgotności. Kod do pomiaru ADC działa poprawnie, jednak tu mam kłopot. <br /><br />[syntax=c]if(key = read_keypad()) // start klawiatury<br /> {<br /><br /><br /> if(key == 4)<br /> {<br /><br /> //wilgotnosc<br /><br />   _delay_ms(400);<br />   skok1:<br />   lcd_cls();<br />   lcd_locate(0,0);<br />     // lcd_cls();<br />   lcd_str(&quot;Wilgotnosc:     &quot;);<br /><br />   int result = 0;<br />         while (true) {<br /><br />          adc_value = ADC_odczyt();// wpisanie wartości odczytanej z adc do zmiennej adc_value<br />          wilg = 100-(adc_value *100.00)/1023.00;       // przetwarzanie pomiaru na %, 1023-100%<br />         dtostrf(wilg,2,0,array);       //konwertowanie liczby na tekst<br />         lcd_locate(1,0);<br />         lcd_str(array);<br />          _delay_us(500);//<br /><br />            int key = read_key(); // odczyt wcisnietego klawisza<br />             if (key != -1) {<br /><br />            if(key==16)<br />           {<br />           goto skok1;<br />           }<br />             if(key == 13) // powrot do glownego menu<br />             {<br /><br />             _delay_ms(400);<br />             goto skok;<br />             }<br /><br />                 if (key == 15) // zatwierdzenie wpisanej liczby<br />                 {<br /><br />                    <br />  if(result&gt;0 &amp;&amp; result&lt;=100) // result to liczba ktora zapisuje sie pod wplywem wprowadzania liczby przez klawiature<br />                 {<br /><br />                     check_result(result);<br />                     result = 0;<br /><br />                 }<br /><br />                 else {<br />                 lcd_locate(0,0);<br />                 lcd_str(&quot;******BLAD******&quot;);<br />                 lcd_locate(1,0);<br />                 lcd_str(&quot;SPROBOJ PONOWNIE&quot;);<br />                 _delay_ms(2000);<br />                 goto skok1;<br />                 }<br /><br />                 lcd_cls();<br />                lcd_locate(0,0);<br />                      // lcd_cls();<br />                lcd_str(&quot; START  PODLEW. &quot;);<br />                lcd_locate(1,0);<br />                lcd_str(&quot;################&quot;);<br /><br />            if(wilg &gt;= liczba)<br />            {        <br />            PORTA |= (1&lt;&lt;PA3); // pompka<br />            }<br /><br />            else<br />            {<br />            PORTA &amp;= ~(1&lt;&lt;PA3); //pompka<br />            }<br /><br /><br />                 }<br /><br />                 else<br />                 {<br />                     result = result * 10 + a;  // zsumowanie cyfr jako dwucyfrowa liczba                   <br />                     lcd_locate(0,12);<br />                     lcd_int(result);<br />                     lcd_locate(0,15);<br />                     lcd_str(&quot; &quot;);<br /><br /><br />                 }<br /><br />             }<br /><br />         }<br />                                                     }[/syntax]<br /><br />Potraficie mi coś doradzić, bo niestety męczę sie nad tym troche?  Jak przechodzę do tej pozycji menu, wpisuje liczbe i zatwierdzam to pompka się włącza niezależnie od wskazania czujnika i działa non stop. Próbowałem to jakoś rozwiązać, ale bez skutku. Z góry dziękuję i pozdrawiam.  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" />  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18498">KampoPampo</a> — 8 lis 2018, o 12:53</p><hr />
]]></content>
</entry>
</feed>