Tuesday, 19 March 2024
     
 
Main Menu
Home Home
Shop Shop
News News
BASCOM-AVR BASCOM-AVR
BASCOM-8051 BASCOM-8051
Products Products
Application Notes Application Notes
Publications Publications
Links Links
Support Center Support Center
Downloads Downloads
Forum Forum
Resellers Resellers
Contact Us Contact Us
Updates Updates
MCS Wiki MCS Wiki
Online Help
BASCOM-AVR Help BASCOM-AVR Help
BASCOM-8051 Help BASCOM-8051 Help
Contents in Cart
Show Cart
Your Cart is currently empty.
Search the Shop

Products Search

User Login
Username

Password

If you have problem after log in with disappeared login data, please press F5 in your browser

RSS News
 
     
 

 
   
     
 
AN #194 - Using SHT21 for cellar climate control Print
2nd place in 2011 competition bascom.at.ua


Much were written about this amazing " cubes ", has here is solved too to use given miraculously. Idea was such, support micro-climate  in cellar.

For conclusion of information is used MELT 2х line 16 class, keys of management with old motherboard 15N03H on 30 volts and ATMEGA 8 - 16PU.

Long hung around with code, on indicator were removed numerals, well even close not reminded true importance. What turned out to be, reasons 2, converter with 5 on 3,3 volts and recalculation itself got data.

With first dared simply, there is worker of the decision from DECODER’а
http://we.easyelectronics.ru/part/datchik-temperatury-i-vlazhnosti-sht21.html :


With code it happened to to ask the help beside community, trivial errors from ignorance Bascom's, all we teach!

That was got.



The First cut-in, call at in menu and choose the button upwards, downwards adjustment hours or limits of the functioning(working) the ventilator and heating. After striking IN- entering, all installed parameters are saved in memories MC. This 8 first cells to memories.

At achievement upper придела to moisture is included ventilator, but at reduction of the temperature - a heating.

The Ventilators use from BP computer, heater this Car heater sittings of the car. CHtob was a best return of the heat, glue her(it) on metallic the base 300*300 mm. If occurs change the ambiance, data and time, are sent on computer through RS-485.

The Disappearings of the feeding, in the same way оповещается through port RS-485. (if adapt autonomous feeding from telephone or simply battery on 4,5 volts.) Eats the block from 20 volts.

Certainly this not masterpiece, but works as it is necessary.



Source code:


'*******************************************************************************
'*    Description : SHT21_POD                                                  *
'*    Revision    : 1.0                                                        *
'*    Controller  : ATMEGA8                                                    *
'*    Compiler    : BASCOM-AVR  1.11.9.8 DEMO                                  *
'*    Author      : 'AV_ , 2011                                                *
'*    Web         : HTTP://WWW                                       *
'*******************************************************************************
'
'************************** Ňčď_ěčęđîęîíňđîëëĺđŕ *******************************
$regfile = "m8def.dat" 'Äë˙ POD ěĺăŕ8
$crystal = 4000000                                          'ęâŕđö 4 ĚĺĂÖ
$baud = 19200
'$lib "lcd4.lbx"                                             'čńďîëüçóĺě 4-áčňíîĺ ďîäęëţ÷ĺíčĺ äčńďëĺ˙ ń ďîěîůüţ ŕëüňĺđíŕňčâíîé áčáëčîňĺęč
$lib "mcsbyte.lbx"
$lib "ds1307clock.lib" 'ďîäęëţ÷ŕĺě áčáëčîňĺęó ds1307
$lib "modbus.lbx" 'ďîäęëţ÷ŕĺě áčáëčîňĺęó modbus

$hwstack = 40
$swstack = 16
$framesize = 32
$eeprom
'$sim

'*********************** ęîíôčăóđŕöč˙ ďîđňîâ ***********************************
Config Lcd = 16 * 2                                         ' ýęđŕí 16*2 (ëţáîé ń ęîíňđîëëĺđîě HD44780)
Config Lcdpin = Pin , Rs = Portb., E = Portb., Db4 = Portb., Db5 = Portb., Db6 = Portb., Db7 = Portb.5
Config Scl = Portc.5                                        'ďîäęëţ÷ŕĺě i2c SCL
Config Sda = Portc.4                                        'ďîäęëţ÷ŕĺě i2c SDA
Const Ds1307w = &HD0                                        'Ęîíńňŕíňű äë˙ đŕáîňű ń ds1307 çŕďčńü
Const Ds1307r = &HD1                                        'Ęîíńňŕíňű äë˙ đŕáîňű ń ds1307 ÷ňĺíčĺ
Config Portc.= Input 'íîăŕ "Power_pin"
Config Portc.= Output 'íîăŕ ęóäŕ ďîäęëţ÷ĺí âęëţ÷ŕňĺëü Q1
Config Portc.= Output 'íîăŕ ęóäŕ ďîäęëţ÷ĺí âęëţ÷ŕňĺëü Q2
Config Portd.= Output 'íîăŕ äë˙ ďĺđĺęëţ÷ĺíč˙ RS485 ďĺđĺäŕ÷ŕ ďđčĺě
Config Print = Portd., Mode = Reset 'ďî đĺńĺňó
Config Serialin = Buffered , Size = 250                     'Áóôĺđ RS485 ăäĺ âńĺ äĺđćčě
Cursor Off 'Âűęëţ÷ŕĺě ęóđńîđ
Cls 'Î÷čńňęŕ ýęđŕíŕ


'*** íŕńňđîčě ďîđň äë˙ ďîäęëţ÷ĺíč˙ ęíîďîę č äđ. óńňđîéńňâ (Q1,Q2,Drying îáîăđĺâ)

Set Portd.: Ok Alias Pind.7                               'Óńňŕíîâęŕ"Set" âíóňđĺííčé đĺçčńěňîđ íŕ +  ââîä
Set Portd.: Esc Alias Pind.6                              'Óńňŕíîâęŕ"Set" âíóňđĺííčé đĺçčńěňîđ íŕ +  ěĺíţ
Set Portd.: Up Alias Pind.4                               'Óńňŕíîâęŕ"Set" âíóňđĺííčé đĺçčńěňîđ íŕ +  âĺđő
Set Portd.: Down Alias Pind.5                             'Óńňŕíîâęŕ"Set" âíóňđĺííčé đĺçčńěňîđ íŕ +  íčç
Set Portd.: Fen Alias Pind.3                              'Óńňŕíîâęŕ"Set" âíóňđĺííčé đĺçčńěňîđ íŕ +  Drying
Power_pin Alias Pinc.3                                      'Power_pin íĺň!
Q1 Alias Portc.0                                            'íŕńňđîéęŕ ďîäęëţ÷ĺíč˙ Q1
Q2 Alias Portc.2                                            'íŕńňđîéęŕ ďîäęëţ÷ĺíč˙ Q2

Q1 = 0
Q2 = 0

'*********************** Ďĺđĺěĺííűĺ SHT-21 *************************************
Dim Data1 As Byte
Dim Data2 As Byte
Dim Crc As Byte
Dim Datat As Word
Dim Datah As Word
Dim T As Single
Dim H As Single
Dim T0 As Single 'Őđŕíčě äë˙ ńđŕâíĺíč˙
Dim H0 As Single 'Őđŕíčě äë˙ ńđŕâíĺíč˙
'***
Dim X1 As Byte 'Îáú˙âčňü áŕéňîâóţ ďĺđĺěĺííóţ X1(âđĺěĺííűĺ äŕí.)
Dim Ay As Byte 'Îáú˙âčňü áŕéňîâóţ ďĺđĺěĺííóţ Ay(öčęëŕ)
Dim J1 As Byte 'Îáú˙âčňü áŕéňîâóţ ďĺđĺěĺííóţ J1(ăîä)
Dim M1 As Byte 'Îáú˙âčňü áŕéňîâóţ ďĺđĺěĺííóţ M1(ěĺń˙ö)
Dim D1 As Byte 'Îáú˙âčňü áŕéňîâóţ ďĺđĺěĺííóţ D1(äĺíü)
Dim H1 As Byte 'Îáú˙âčňü áŕéňîâóţ ďĺđĺěĺííóţ H1(÷ŕń)
Dim Min1 As Byte 'Îáú˙âčňü áŕéňîâóţ ďĺđĺěĺííóţ Min1(ěčíóňŕ)

'************************* Óńňŕíîâî÷íűĺ ****************************************
Dim A As Integer 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ A
Dim B As Integer 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ B
Dim Tem1 As Single 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ Tem1
Dim Tem2 As Single 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ Tem2
Dim C As Integer 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ C
Dim D As Integer 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ D
Dim Vla1 As Single 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ Vla1
Dim Vla2 As Single 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ Vla2


'***************** Ďĺđĺěĺííűĺ Eeprom ĚĘ ďđîöŕ   ********************************
Dim Ae As Eram Integer 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ â EEPROM Ae
Dim Be As Eram Integer 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ â EEPROM Be
Dim Ce As Eram Integer 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ â EEPROM Ce
Dim De As Eram Integer 'Îáú˙âčňü öĺëóţ ďĺđĺěĺííóţ â EEPROM De
= Ae
= Be
= Ce
= De


'*** Ďĺđĺěĺííűĺ ÷ŕńîâ ***
Dim Seco As Byte
Dim Mine As Byte
Dim Hour As Byte
Dim Day As Byte
Dim Dat As Byte
Dim Month As Byte
Dim Year As Byte

'***
'************************************Ďđîöĺäóđű**********************************
Declare Sub Sht21th                                         'Îáú˙âčňü ďđîöĺäóđó Ňĺđěîäŕň÷čęŕ
Declare Sub Up_Down() 'Îáú˙âčňü ďđîöĺäóđó Up_Down
Declare Sub Drying                                             'Îáú˙âčňü ďđîöĺäóđó Drying
Declare Sub Heating                                          'Îáú˙âčňü ďđîöĺäóđó Heating
'***


Deflcdchar 0 , 8 , 20 , 8 , 3 , 4 , 4 , 4 , 3               ' ăđŕäóń
Deflcdchar 1 , 32 , 4 , 4 , 14 , 14 , 31 , 31 , 14          ' Çíŕę âëŕćíîńňč
Deflcdchar 2 , 4 , 10 , 17 , 31 , 17 , 17 , 17 , 31         ' Çíŕę ďîäâŕëŕ
Deflcdchar 3 , 32 , 4 , 4 , 14 , 14 , 31 , 31 , 32          ' Çíŕę âĺđő
Deflcdchar 4 , 32 , 31 , 31 , 14 , 14 , 4 , 4 , 32          ' Çíŕę íčç

'ŕäđĺń ěčęđîńőĺěű-äŕň÷čęŕ SHT21  H80- çŕďčńü, H81- ÷ňĺíčĺ
'Ęîěŕíä äë˙ óďđŕâëĺíč˙ SHT21 âńĺăî 7:

'0xE3 - Čçěĺđčňü ňĺěďĺđŕňóđó. Ďđč ýňîě íŕ âđĺě˙ čçěĺđĺíč˙ ëčíč˙ SCL áóäĺň ďđčćŕňŕ ę çĺěëĺ.
'0xE5 - Čçěĺđčňü âëŕćíîńňü. Ëčíč˙ SCL ňŕę-ćĺ ďđčćčěŕĺňń˙ ę çĺěëĺ íŕ âđĺě˙ čçěĺđĺíč˙.
'0xF3 - Čçěĺđčňü ňĺěďĺđŕňóđó. Íŕ ýňîň đŕç äŕň÷čę íĺ ďđčćčěŕĺň ëčíčţ SCL íŕ âđĺě˙ çŕěĺđŕ.
'0xF5 - Čçěĺđčňü âëŕćíîńňü. Ëčíč˙ SCL íĺ ďđčćčěŕĺňń˙.
'0xE6 - Çŕďčńŕňü äŕííűĺ â ďîëüçîâŕňĺëüńęčé đĺăčńňđ.
'0xE7 - Ďđî÷čňŕňü äŕííűĺ čç ďîëüçîâŕňĺëüńęîăî đĺăčńňđŕ.
'0xFE - Ďĺđĺçŕăđóçčňü äŕň÷čę.

'******** Ďđîöĺäóđŕ *********
Begin:
Cls
Lcd "*** SHT-21 *** "

Do


Gosub Clock                                                 'óçíŕĺě âđĺě˙
 Gosub Sht21th                                             'óçíŕĺě ňĺěďĺđŕňóđó č âëŕćíîńňü
Waitms 900                                                  'ňîđěîçčě
 Gosub Xx
Call Heating                                                 'Âűçâŕňü ďîäďđîăđŕěěó(ďđîöĺäóđó) "Heating"
Call Drying                                                    'Âűçâŕňü ďîäďđîăđŕěěó(ďđîöĺäóđó) "Drying"

Cls 'âűâîäčě âđĺě˙ č âńĺ îńňŕëüíîĺ
 Lcd Chr(2) ; Fusing(, "#.#") ; Chr(0) ; " " ; Chr(1) ; Fusing(, "#.#") ; "%"
 Locate 2 , 1
 Lcd " " ; Hour ; ":" ; Mine ; " " ; Dat ; "/" ; Month ; "/" ; Day
 If Esc = 0 Then Goto Meni                              'ęíîďî÷ęč ěĺíţ

 Loop
 End

'*** SHT-21T ňĺěďĺđŕňóđŕ ***
Sub Sht21th:

I2cstart
I2cwbyte &H80                                               'ŕäđĺń ěčęđîńőĺěű-äŕň÷čęŕ SHT21
I2cwbyte &HE3                                               'âűáîđ čçěĺđĺíč˙ ňĺěďĺđŕňóđű â íîđěŕëüíîě đĺćčěĺ
 Waitms 100                                                 'čçěĺđĺíčĺ

I2cstart
I2cwbyte &H81                                               '÷ňĺíčĺ đĺçóëüňŕňŕ čçěĺđĺíč˙
I2crbyte Data1 , Ack 'ďđčĺě ńňŕđřĺăî áŕéňŕ, ćäĺě ńëóäóţůčé áŕéň
I2crbyte Data2 , Ack 'ďđčĺě ěëŕäřĺăî áŕéňŕ
I2crbyte Crc , Nack 'ďđčĺě áŕéňŕ ęîíňđîëüíîé ńóěěű (ěîćíî íŕ íĺăî çŕáčňü)
I2cstop 'ęîíĺö îáůĺíč˙

'***Ń÷čňŕĺě***
Datat = Data1
Shift Datat , Left , 8                                      'ńäâčă íŕ 8 áčň
Datat = Datat + Data2
= Datat * 175.72
= T / 65536
= T - 46.85

'***Âńĺ***

'*** SHT-21H âëŕćíîńňü ***
'Sht21h:

I2cstart
I2cwbyte &H80                                               'ŕäđĺń ěčęđîńőĺěű-äŕň÷čęŕ SHT21
I2cwbyte &HE5                                               'âűáîđ čçěĺđĺíč˙ âëŕćíîńňč â íîđěŕëüíîě đĺćčěĺ
 Waitms 100                                                 'čçěĺđĺíčĺ

I2cstart
I2cwbyte &H81                                               '÷ňĺíčĺ đĺçóëüňŕňŕ čçěĺđĺíč˙
I2crbyte Data1 , Ack 'ďđčĺě ńňŕđřĺăî áŕéňŕ, ćäĺě ńëóäóţůčé áŕéň
I2crbyte Data2 , Ack 'ďđčĺě ěëŕäřĺăî áŕéňŕ
I2crbyte Crc , Nack 'ďđčĺě áŕéňŕ ęîíňđîëüíîé ńóěěű (ěîćíî íŕ íĺăî çŕáčňü)
I2cstop 'ęîíĺö îáůĺíč˙

'***Ń÷ĺň***
Datah = Data1
Shift Datah , Left , 8                                      'ńäâčă íŕ 8 áčň
Datah = Datah + Data2
= Datah * 125
= H / 65536
= H - 6

'***Âńĺ***
End Sub


'*** Ńđŕâíčâŕĺě äŕííűĺ ***
Xx:

If T <> T0 Then
 T0 = T : Print Fusing(, "#.#") ; "C " ; Hour ; ":" ; Mine ; " " ; Dat ; "/" ; Month ; "/" ; Dat

 If H <> H0 Then
    H0 = H : Print Fusing(, "#.#") ; "% " ; Hour ; ":" ; Mine ; " " ; Dat ; "/" ; Month ; "/" ; Dat

 If Power_pin < 1 Then
 Print "*ÍĹŇ ĎČŇŔÍČß* NO voltages  " ; Hour ; ":" ; Mine ; " " ; Dat ; "/" ; Month ; "/" ; Dat

 End If
 End If
 End If
 Return


'*** îďđĺäĺë˙ĺě ňĺęóůĺĺ âđĺě˙

Clock: 'ńňŕíäŕđňíŕ˙ đŕáîňŕ ń RTC ds1307 ďî čçâëĺ÷ĺíčţ äŕííűő


I2cstart
I2cwbyte Ds1307w
I2cwbyte &H00
I2cstart
I2cwbyte Ds1307r
I2crbyte Seco , Ack
I2crbyte Mine , Ack
I2crbyte Hour , Ack
I2crbyte Day , Ack
I2crbyte Dat , Ack
I2crbyte Month , Ack
I2crbyte Year , Nack
I2cstop
 Seco = Makedec(seco) : Mine = Makedec(mine) : Hour = Makedec(hour)
 Day = Makedec(day) : Dat = Makedec(dat) : Month = Makedec(month) : Year = Makedec(year)


Return


'*** Ěĺíţ
Meni:
Cls
Rem Óńň. âđĺěĺíč
Lcd "©cż. łpeĽe˝¸ " ; Chr(3)
Locate 2 , 1
Rem Óńň. äŕň÷čęŕ
Lcd "©cż. ăażŔ¸şa " ; Chr(4)

Do
If Up = 0 Then Goto Ust_v
If Down = 0 Then Goto Ust_d
If Ok = 0 Then Goto Begin

 Loop
'***

Ust_v:

'*******************************************************************************

 'Âűáîđ č ďîńëĺäóţůĺĺ ńîőđŕíĺíčĺ â ďŕě˙ňü(ýíĺđăîçŕâčńčěóţ) ds1307, ăîäŕ

 Cls
   Ay = 0
   X1 = Year
 Do
 If X1 > 99 Then X1 = 9
 If X1 < 9 Then X1 = 99
 Locate 1 , 1
 Lcd "*>ŕaża<*"
 Locate 2 , 1
 Lcd "ˇoă: " ; X1 ; "  "
   Up_Down
   J1 = X1
 Loop Until Ay = 1

'*******************************************************************************

 'Âűáîđ č ďîńëĺäóţůĺĺ ńîőđŕíĺíčĺ â ďŕě˙ňü(ýíĺđăîçŕâčńčěóţ) ds1307, ěĺń˙öŕ

 Cls
   Ay = 0
   X1 = Month
 Do
 If X1 > 12 Then X1 = 1
 If X1 < 1 Then X1 = 12
 Locate 1 , 1
 Lcd "*>ŕaża<*"
 Locate 2 , 1
 Lcd "MecÇĺ: " ; X1 ; "  "
   Up_Down
   M1 = X1
 Loop Until Ay = 1

'*******************************************************************************

 'Âűáîđ č ďîńëĺäóţůĺĺ ńîőđŕíĺíčĺ â ďŕě˙ňü(ýíĺđăîçŕâčńčěóţ) ds1307, äí˙

 Cls
   Ay = 0
   X1 = Day
 Do
 If X1 > 31 Then X1 = 1
 If X1 < 1 Then X1 = 31
 Locate 1 , 1
 Lcd "*>ŕaża<*"
 Locate 2 , 1
 Lcd "ŕe˝Ä: " ; X1 ; "  "
   Up_Down
   D1 = X1
 Loop Until Ay = 1
   Year = J1
   Month = M1
   Day = D1
 Gosub Set_date

'*******************************************************************************

 'Âűáîđ č ďîńëĺäóţůĺĺ ńîőđŕíĺíčĺ â ďŕě˙ňü(ýíĺđăîçŕâčńčěóţ) ds1307, ÷ŕńîâ

 Cls
   Ay = 0
   X1 = Hour
 Do
 If X1 > 23 Then X1 = 0
 If X1 < 0 Then X1 = 23
 Locate 1 , 1
 Lcd "*>BpeĽÇ<*"
 Locate 2 , 1
 Lcd "«acĂ: " ; X1 ; "  "
   Up_Down
   H1 = X1
 Loop Until Ay = 1

'*******************************************************************************

 'Âűáîđ č ďîńëĺäóţůĺĺ ńîőđŕíĺíčĺ â ďŕě˙ňü(ýíĺđăîçŕâčńčěóţ) ds1307, ěčíóň

 Cls
   Ay = 0
   X1 = Mine
 Do
 If X1 > 59 Then X1 = 0
 If X1 < 1 Then X1 = 59
 Locate 1 , 1
 Lcd "*>BpeĽÇ<*"
 Locate 2 , 1
 Lcd "M¸˝yżĂ: " ; X1 ; " "
   Up_Down
   Min1 = X1
 Loop Until Ay = 1

   Hour = H1
   Mine = Min1
   Seco = 0
 Gosub Set_time

 Goto Begin
'***
Set_date:
  Day = Makebcd(day) : Month = Makebcd(month) : Year = Makebcd(year)
 I2cstart ' Generate start code
 I2cwbyte Ds1307w                                          ' send address
 I2cwbyte 4                                                ' starting address in 1307
 I2cwbyte Day                                              ' Send Day
 I2cwbyte Month                                            ' Mon
 I2cwbyte Year                                             ' ăîä
 I2cstop
Return

Set_time:
  Seco = Makebcd(seco) : Mine = Makebcd(mine) : Hour = Makebcd(hour)
 I2cstart ' Generate start code
 I2cwbyte Ds1307w                                          ' send address
 I2cwbyte 0                                                ' starting address in 1307
 I2cwbyte Seco                                             ' Send Data to SECONDS
 I2cwbyte Mine                                             ' min
 I2cwbyte Hour                                             ' Hours
 I2cstop
Return

'*******************************************************************************

Ust_d:

'***
'Óńňŕíîâęŕ č ńîőđŕíĺíčĺ â eeprom ěę, âűęëţ÷ĺíč˙ Q2

 Cls
   Ay = 0
   X1 = A
 Do
 If X1 > 10 Then X1 = 7
 If X1 < 7 Then X1 = 10
 Locate 1 , 1
 Lcd "[ Bòop żeĽľ. ]"
 Locate 2 , 1
 Lcd "TeĽľ. łş».: " ; X1 ; "  "
   Up_Down
   Tem1 = X1
 Loop Until Ay = 1
    A = Tem1

'*******************************************************************************
'Óńňŕíîâęŕ č ńîőđŕíĺíčĺ â eeprom ěę, âęëţ÷ĺíč˙ Q2

 Cls
   Ay = 0
   X1 = B
 Do
 If X1 > 10 Then X1 = 4
 If X1 < 4 Then X1 = 10
 Locate 1 , 1
 Lcd "[ Bòop żeĽľ. ]"
 Locate 2 , 1
 Lcd "TeĽľ. łĂş».: " ; X1 ; "  "
   Up_Down
   Tem2 = X1
 Loop Until Ay = 1
    B = Tem2

'***
'Óńňŕíîâęŕ č ńîőđŕíĺíčĺ â eeprom ěę, âęëţ÷ĺíč˙ Q1

 Cls
   Ay = 0
   X1 = C
 Do
 If X1 > 80 Then X1 = 50
 If X1 < 50 Then X1 = 80
 Locate 1 , 1
 Lcd "[ ©cż.ł»a¶˝ocż¸]"
 Locate 2 , 1
 Lcd "B»a¶. łş».: " ; X1 ; "  "
   Up_Down
   Vla1 = X1
 Loop Until Ay = 1
    C = Vla1

'*******************************************************************************
'Óńňŕíîâęŕ č ńîőđŕíĺíčĺ â eeprom ěę, âűęëţ÷ĺíč˙ Q1

 Cls
   Ay = 0
   X1 = D
 Do
 If X1 > 80 Then X1 = 49
 If X1 < 49 Then X1 = 80
 Locate 1 , 1
 Lcd "[ ©cż.ł»a¶˝ocż¸]"
 Locate 2 , 1
 Lcd "B»a¶. łĂş».: " ; X1 ; "  "
   Up_Down
   Vla2 = X1
 Loop Until Ay = 1
    D = Vla2
 Gosub Epp_store

'***

Epp_store:
 Writeeeprom A , Varptr(ae) ' ńîőđŕí˙ĺě ďĺđĺěĺííóţ A â ýíĺđăîíĺçŕâčńčěóţ ďŕě˙ňü ěę
 Writeeeprom B , Varptr(be) ' ńîőđŕí˙ĺě ďĺđĺěĺííóţ B â ýíĺđăîíĺçŕâčńčěóţ ďŕě˙ňü ěę
 Writeeeprom C , Varptr(ce) ' ńîőđŕí˙ĺě ďĺđĺěĺííóţ C â ýíĺđăîíĺçŕâčńčěóţ ďŕě˙ňü ěę
 Writeeeprom D , Varptr(de) ' ńîőđŕí˙ĺě ďĺđĺěĺííóţ D â ýíĺđăîíĺçŕâčńčěóţ ďŕě˙ňü ěę

Return

'***

'*******************************************************************************
'Ďđîöĺäóđŕ îňâĺ÷ŕţůŕ˙ çŕ ââîä äŕííűő, óâĺëč÷ĺíčĺ č óěĺíüřĺíčĺ çíŕ÷ĺíč˙

Sub Up_Down()
 Waitms 300
 If Up = 0 Then Incr X1
 If Down = 0 Then Decr X1
 If Ok = 0 Then : Ay = 1 : Else : : Ay = 0 : End If
End Sub

'***

'*******************************************************************************
'Ďđîöĺäóđŕ îňâĺ÷ŕţůŕ˙ çŕ âęë. č âűęë. Ňđ. ďđč çŕäŕííîé â íŕńňđîęéęŕő, ňĺěďĺđŕňóđĺ

Sub Heating

  Tem1 = A
  Tem2 = B

 If T => Tem2 Then : Q2 = 0 : End If

 If T <= Tem1 Then : Q2 = 1 : End If

End Sub
'*******************************************************************************
'Ďđîöĺäóđŕ îňâĺ÷ŕţůŕ˙ çŕ âęë. č âűęë. Ňđ. ďđč çŕäŕííîé â íŕńňđîęéęŕő, âëŕćíîńňč

Sub Drying

  Vla1 = C
  Vla2 = D

 If H => Vla1 Then : Q1 = 1 : End If

 If H <= Vla2 Then : Q1 = 0 : End If

End Sub