Forum www.nestor-electronic.pl Strona G堯wna www.nestor-electronic.pl
Forum sterownik闚 procesorowych- programy BASCOM
 
 FAQFAQ   SzukajSzukaj   U篡tkownicyU篡tkownicy   GrupyGrupy   RejestracjaRejestracja 
 ProfilProfil   Zaloguj si, by sprawdzi wiadomo軼iZaloguj si, by sprawdzi wiadomo軼i   ZalogujZaloguj 

Higrostat Atmega8 i przkazniki PK1 / PK2

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.nestor-electronic.pl Strona G堯wna -> P造tka testowa ATMEGA8
Zobacz poprzedni temat :: Zobacz nast瘼ny temat  
Autor Wiadomo嗆
koniu12
Nowy


Do陰czy: 08 Pa 2009
Posty: 4

PostWys豉ny: Wto Mar 25, 2014 7:18 pm    Temat postu: Higrostat Atmega8 i przkazniki PK1 / PK2 Odpowiedz z cytatem

Witam,

mam plytke z wsadem higrostat. Ustawienia dzialaja poprawnie, niestety przekazniki nie wlaczaja sie przy ustawionych prograch. Czy mozna prosic o sprawdzenie ewentualnego bledu w kodzie:

'(

Program Termometr Oraz Higrometr Pod³aczony Do Podtu D.1 -wire Na Ma³ej P³ytce
Czujnik Dht11

Program Odczytujue Temperature Z Dok³adnoœcia Do 1 Stopnia
Oraz Odczytuje Wilgotnosc Do 1 %

Dok³adnoœæ Samego Czujnika Wh Opisu
Temperatura + - 2 Stopnie
WilgotnoϾ + - 5%

Zakres Nastaw闚:
Temperatura 1 -50 Stopni
WilgotnoϾ 20 -95%


Jeœ³i Temperatura Za³¹czenia = Temperatura Wy³¹czenie To Przekaznik Nie Dzia³a
Tak Samo Je³si Chodzi O Wilgotnoœæ



Jeœli Temperatura Za³¹czenia Jest Ni¿sza Ni¿ Temperatura Wy³¹czenie To Uk³ad Wie Ze Pracuej W Ukladzie Grzewczym

Jeœ³i Jednak Temp Za³¹czenie Jest Wy¿sza Ni¿ Wy³aczenia Pracuje W Uk³adzie Ch³odz¹cym

Analogicznie Przy Wilgotnoœci.







')
'----------------------------------------------------------------------------------



$regfile = "m8def.dat" 'informuje kompilator o pliku
'dyrektyw mikrokontrolera
$crystal = 8000000 'informuje kompilator
'o czàstotliwoci oscylatora
'taktuj¦cego mikrokontroler


Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2


Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 ' znak stopnia
Deflcdchar 1 , 12 , 4 , 12 , 4 , 4 , 14 , 10 , 14 ' kluczyk

Config Portb.0 = Output 'uniwersalne PK4
Config Portb.2 = Output 'wyjœcia przekaznik闚 PK2
Config Portb.1 = Output 'wyjœcia przekaznik闚 PK1
Config Portd.0 = Output 'wyjœcia przekaznik闚 PK3

Config Pinb.3 = Input 'porty jako wejœciowe ' pstryki
Config Pinb.4 = Input 'porty jako wejœciowe pstryki
Config Pinb.5 = Input 'porty jako wejœciowe pstryki




Set Portb.3 ' ustawia na stan wysoki pstryki
Set Portb.4 ' ustawia na stan wysoki pstryki
Set Portb.5 ' ustawia na stan wysoki pstryki

Up_sw Alias Pinb.5 ' Przycisk "UP"
Down_sw Alias Pinb.4 ' Przycisk "DOWN"
Ok_sw Alias Pinb.3 ' Przycisk "ENTER"

Set Portb.5 'ustawiam pstryki na stan wysoki
Set Portb.4
Set Portb.3


Pk1 Alias Portb.1
Pk2 Alias Portb.2
Pk3 Alias Portd.0



'----------------------- zmienne --------------



'---------------------------------------------
Cursor Off
Cls


Declare Sub Get_th(t As Byte , H As Byte) ' deklaracja procedury odczytu czujnika


' port do kt鏎ego pod³¹czony czujnik

Dht_put Alias Portd.1
Dht_get Alias Pind.1
Dht_io_set Alias Ddrd.1

Dim T As Byte
Dim H As Byte
Dim Crc As Byte
Dim Mybyte As Byte
Dim Sensor_data As String * 40
Dim Tmp_str8 As String * 8
Dim Count As Byte

'--------- zmienne dodatkowe ------------
Dim Menu As Byte

Dim Temp_on As Byte
Dim Temp_off As Byte

Dim Wilg_on As Byte
Dim Wilg_off As Byte

Dim Temp_on_e As Byte
Dim Temp_off_e As Byte

Dim Wilg_on_e As Byte
Dim Wilg_off_e As Byte

Dim Licznik As Byte


'--------------------- odczyt eeprom

Readeeprom Temp_on_e , 5
Readeeprom Temp_off_e , 10

Readeeprom Wilg_on_e , 15
Readeeprom Wilg_off_e , 20

If Temp_on_e > 50 Then Temp_on_e = 40
If Temp_off_e > 50 Then Temp_off_e = 35

If Wilg_on_e > 95 Then Wilg_on_e = 90
If Wilg_off_e > 95 Then Wilg_off_e = 85


Temp_on = Temp_on_e
Temp_off = Temp_off_e

Wilg_on = Wilg_on_e
Wilg_off = Wilg_off_e

'--------------------------------------


Set Dht_io_set
Set Dht_put
Cls

Lcd "www.atmega8.pl"
Lowerline
Lcd "Hihrostat "
Wait 1

'---------------------------------------------- poczatek programu ---------------
Menu = 1

Do

If Up_sw = 0 Then Incr Menu
If Down_sw = 0 Then Decr Menu
If Menu > 3 Then Menu = 1
If Menu < 1 Then Menu = 3








If Menu = 1 Then
Licznik = 0
Call Get_th(t , H)
Cls

Lcd "Temp: " ; T ; Chr(0) ; "C "
Lowerline
Lcd "Wilg: " ; H ; " % "
Wait 1

End If

'------------------------- ustawienie termostatu ---------------

If Menu = 2 Then
Cls
Locate 1 , 1
Lcd "Termostat ustaw."
Locate 2 , 1
Lcd "Zal:" ; Temp_on
Locate 2 , 9
Lcd "Wyl:" ; Temp_off
Waitms 500
Incr Licznik
If Licznik > 20 Then Menu = 1
If Ok_sw = 0 Then
Cls
Locate 1 , 16
Lcd Chr(1)
Locate 1 , 1
Lcd "Ustaw Tmp zal."
Locate 2 , 1
Lcd "Zal:" ; Temp_on ; Chr(0) ; "C"

Do
If Up_sw = 0 Then
Waitms 200
Incr Temp_on
If Temp_on > 50 Then Temp_on = 50
Locate 1 , 1
Lcd "Ustaw Tmp zal."
Locate 2 , 1
Lcd "Zal:" ; Temp_on ; Chr(0) ; "C"
End If

'--------------------------------------------


If Down_sw = 0 Then

Waitms 200

Decr Temp_on
If Temp_on <1>= Temp_on Then Temp_off = Temp_on -1
Locate 1 , 1
Lcd "Ustaw Tmp wyl."
Locate 2 , 1
Lcd "Wyl:" ; Temp_off ; Chr(0) ; "C"

Do
If Up_sw = 0 Then
Waitms 200
Incr Temp_off
If Temp_off > 50 Then Temp_off = 50
Locate 1 , 1
Lcd "Ustaw Tmp wyl."
Locate 2 , 1
Lcd "Wyl:" ; Temp_off ; Chr(0) ; "C"
End If

'--------------------------------------------


If Down_sw = 0 Then

Waitms 200

Decr Temp_off
If Temp_off <1> 20 Then Menu = 1
If Ok_sw = 0 Then
Cls
Locate 1 , 16
Lcd Chr(1)
Locate 1 , 1
Lcd "Ustaw Wilg zal."
Locate 2 , 1
Lcd "Zal:" ; Wilg_on ; " %"

Do
If Up_sw = 0 Then
Waitms 200
Incr Wilg_on
If Wilg_on > 95 Then Wilg_on = 95
Locate 1 , 1
Lcd "Ustaw Wilg zal."
Locate 2 , 1
Lcd "Zal:" ; Wilg_on ; " %"
End If

'--------------------------------------------


If Down_sw = 0 Then

Waitms 200

Decr Wilg_on
If Wilg_on <20>= Wilg_on Then Wilg_off = Wilg_on -1
Locate 1 , 1
Lcd "Ustaw Wilg wyl."
Locate 2 , 1
Lcd "Wyl:" ; Wilg_off ; " %"

Do
If Up_sw = 0 Then
Waitms 200
Incr Wilg_off
If Wilg_off > 95 Then Wilg_off = 95
Locate 1 , 1
Lcd "Ustaw Wilg wyl."
Locate 2 , 1
Lcd "Wyl:" ; Wilg_off ; " %"
End If

'--------------------------------------------


If Down_sw = 0 Then

Waitms 200

Decr Wilg_off
If Wilg_off < 20 Then Wilg_off = 20
Locate 1 , 16
Lcd Chr(1)
Locate 1 , 1
Lcd "Ustaw Wilg wyl."
Locate 2 , 1
Lcd "Wyl:" ; Wilg_off ; " %"
End If

Waitms 500
Loop Until Ok_sw = 0
Cls
Lcd "Zapamietane"
Wait 1





'---------- zapis pamieci
Wilg_on_e = Wilg_on
Wilg_off_e = Wilg_off
Writeeeprom Wilg_on_e , 15
Writeeeprom Wilg_off_e , 20



Menu = 1



End If



End If

'----------------------- sterowniae przekaznikami'
'
'
If Temp_on = Temp_off Then Reset Pk1
If Temp_on <Temp_off> Temp_off Then
If T > Temp_on Then Set Pk1
If T <= Temp_off Then Reset Pk1
End If

If Temp_on < Temp_off Then
If T <Temp_on>= Temp_off Then Reset Pk1
End If


End If

If Wilg_on = Wilg_off Then Reset Pk2

If Wilg_on <Wilg_off> Wilg_off Then
If H > Wilg_on Then Set Pk2
If H <= Wilg_off Then Reset Pk2
End If

If Wilg_on < Wilg_off Then
If H <Wilg_on>= Wilg_off Then Reset Pk2
End If


End If


Loop
End








'------------------------ procedury -------------------------

Sub Get_th(t As Byte , H As Byte)

Count = 0
Sensor_data = ""
Set Dht_io_set
Reset Dht_put
Waitms 25

Set Dht_put
Waitus 40
Reset Dht_io_set
Waitus 40
If Dht_get = 1 Then
H = 1
Exit Sub
End If

Waitus 80
If Dht_get = 0 Then
H = 2
Exit Sub
End If



While Dht_get = 1 : Wend

Do
While Dht_get = 0 : Wend
Waitus 30
If Dht_get = 1 Then
Sensor_data = Sensor_data + "1"
While Dht_get = 1 : Wend
Else
Sensor_data = Sensor_data + "0"
End If
Incr Count
Loop Until Count = 40

Set Dht_io_set
Set Dht_put



Tmp_str8 = Left(sensor_data , Cool
H = Binval(tmp_str8)

Tmp_str8 = Mid(sensor_data , 17 , Cool
T = Binval(tmp_str8)

Tmp_str8 = Right(sensor_data , Cool
Crc = Binval(tmp_str8)



Mybyte = T + H
If Mybyte <> Crc Then
H = 3
End If

End Sub
Kod:
Powr鏒 do g鏎y
Zobacz profil autora Wy郵ij prywatn wiadomo嗆
czup
Nowy


Do陰czy: 07 Mar 2014
Posty: 2

PostWys豉ny: Sro Lip 23, 2014 9:10 am    Temat postu: Odpowiedz z cytatem

do amina: wklejam drugi raz, 瞠by by bardziej widoczne, jednocze郾ie prosz o zostawienie tylko jednego tematu. (tylko w jednym dziale wida moj odpowiedz)


dobre pytanie u mnie dzieje si tak samo.

kod kt鏎y otrzyma貫m w 2014 roku na p造tce r騜ni si od wy瞠j wklejonego.

ten fragment kodu:
" ' If Temp_on <1>= Temp_on Then Temp_off = Temp_on -1 "
(jaki jest sens tej linii? bo nie bardzo rozumiem: je郵i temp. za陰czenia jest mniejsza od jednego i jeden jest wi瘯sze lub r闚ne temp. za陰czenia to temp. wy陰czenia jest r闚na temp. za陰czenia minus jeden)

ten fragment jest "nieaktywny" - poprzedzony ' i wy鈍ietlany w bascomie jako komentarz

analogicznie dla wilgotno軼i.

edyta: skopiowa貫m kod z powy窺zego postu i go nie kompiluje, w por闚naniu do tego co ja mam jest wi璚ej r騜nic. po paru zmianach wygl康a jakby pracowa na odwr鏒.

edyta dwa: problem rozwi您any (powy窺za linia wyrzucona, bo i tak nie by豉 brana pod uwag), sterowanie przeka幡ikami (dla wilgotno軼i analogicznie): pomiedzy <> w kodzie nie ma "Temp_off" jak wklejam to wrzuca :/

If Temp_on = Temp_off Then Reset Pk1
If Temp_on <Temp_off> Temp_off Then
If T > Temp_on Then Set Pk1
If T <= Temp_off Then Reset Pk1
End If

If Temp_on <Temp_off>= Temp_on Then Set Pk1
If T >= Temp_off Then Reset Pk1
If T < Temp_on Then Reset Pk1
End If
Powr鏒 do g鏎y
Zobacz profil autora Wy郵ij prywatn wiadomo嗆
Wy鈍ietl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.nestor-electronic.pl Strona G堯wna -> P造tka testowa ATMEGA8 Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie mo瞠sz pisa nowych temat闚
Nie mo瞠sz odpowiada w tematach
Nie mo瞠sz zmienia swoich post闚
Nie mo瞠sz usuwa swoich post闚
Nie mo瞠sz g這sowa w ankietach


Powered by phpBB © 2001, 2005 phpBB Group