Forum www.nestor-electronic.pl Strona Główna www.nestor-electronic.pl
Forum sterowników procesorowych- programy BASCOM
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Problem z instrukcją IF

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.nestor-electronic.pl Strona Główna -> Pomoc w programowaniu BASCOM
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
rafaelito
Nowy


Dołączył: 09 Paź 2010
Posty: 1
Skąd: Łęczyca

PostWysłany: Sro Paź 20, 2010 9:57 am    Temat postu: Problem z instrukcją IF Odpowiedz z cytatem

Witam serdecznie

Zaczynam zabawe z BASCOMEM i mam taki problem. Na podstawie płyty ATMEGA8 1.0 buduje sterownik do CWU oraz ogrzewania podłogowego. Mam już program który odczytuje już temperature z czterech czujników ale teraz zaczeły już mi się "schody". Termostat ma załanczać Przekaźnik PK1 jeśli temperatura Czujnika T1 jest większa od 40 stopni i temperatura Czujnika T2 jest mniejsza od 36 stopni w przeciwnym wypadku PK1 jest wyłączony. Napisałem tak:

If T1 > 40 and T2 < 36 Then portb.1 = 1
Else
portb.1=0
End if

Niestety ale sterownik zachowuje się tak:

Jesli temperaturaT1 jest większa od 40 stopni załancza przekaźnik i wyłancza jeśli temperatura spadnie poniżej 40 stopni. Pomija sprawdzenie temperatury z czujnika T2. Proszę Szanownych kolegów o pomoc
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
SunRiv
Zawsze na posterunku


Dołączył: 11 Lut 2009
Posty: 321
Skąd: Opole

PostWysłany: Nie Paź 24, 2010 6:20 pm    Temat postu: Odpowiedz z cytatem

popatrz co napisałeś i bedziesz widział co jest nie tak

If to warunek tłumaczy sie tak

Jeśli a = 10 to wykonaj ......

więc jesli byś chciał tak jak sobie życzysz to musisz zagnieździc warunki

np:

IF t1> 40 then
If t2 < 36 then
portb.1 = 1
Else
portb.1 = 0
End if
End if

co mozna wytłumaczyc tak:

jesli t1 jest większe niz 40 to sprawź
czy t2 jest mniejsze niż 36 i jeśli tak wykonaj
załaczenie portu b1
jak nie to wyłącz


oczywiście mogłem trochę niekoniecznie składniowo napisać bo dawno nic w bascomie nie pisałem , ale mniej wiecej tak to powinno wyglądać
_________________
Subaru Libero SDX-SR 94"
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
beleco
Nowy


Dołączył: 21 Kwi 2009
Posty: 24

PostWysłany: Nie Paź 24, 2010 9:13 pm    Temat postu: Odpowiedz z cytatem

a czy takie polecenie jest poprawne:
If t1 <1 Or t2< 1 Or t3<1 Then Reset Pompa_co
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
thral666
Lekko zaangażowany


Dołączył: 08 Sty 2009
Posty: 65

PostWysłany: Wto Paź 26, 2010 6:08 pm    Temat postu: Odpowiedz z cytatem

SunRiv nie do końca tak jest, bo AND to operator logiczny którego można używać a nawet czasem trzeba. Tak samo z OR.

I instrukcja warunkowa :

If T1 > 40 and T2 <36 i wtedy portb.1 = 1. jest OK

a przy T1 <40 jest nie spełniony jeden warunek a muszą być spełnione oba. dlatego portb.1 przyjmuje 0

rafaelito jeśli chcesz zobaczyć, że to co napisałeś działa to daj na czujnik T1 temperature większą niż 40 a na T2 większą od 36 i też portb.1 otrzyma 0


tak samo

Kod:
If t1 <1 Or t2< 1 Or t3<1 Then Reset Pompa_co


też jest poprawne przy spełnionym przynajmniej jednym warunku Smile

Zajżyj do podstaw logiki z maty, bramki logiczne AND, OR, NOT, NAND, NOR a napewno pomoże. Smile
_________________
Automatyka i inteligencja w budynkach mieszkalnych.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.nestor-electronic.pl Strona Główna -> Pomoc w programowaniu BASCOM Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


Powered by phpBB © 2001, 2005 phpBB Group