Dodanie alarmu temperatury do gotowego projektu


Witam!
Panowie znalazłem na elektrodzie dosyć ciekawy projekt- termometr dwupunktowy + sterowanie diodami rgb.
Układ już mam gotowy i działający, ale potrzebowałbym małej przeróbki.
Otóż czy była by możliwość dodania alarmu który z jednego czujnika np. wewnątrz można by było załączać. Chodzi o to że zdarzyło mi się parę razy zagotować wodę na piecu i do tego chciałbym to zastosować- zamocować czujnik na rurce c.o. i ustawić alarm przy 80st.
Jedno co wyczytałem to podobno czujniki są losowo przypisywane czyli dom może nie być domem- czy mogę prosić o sprawdzenie?
Ewentualnie, dodać jeszcze jeden czujnik i programowo tylko zrobić alarm- temperatura wyświetlana jest niepotrzebna.

Czy nie proszę o zbyt wiele?

schemat i wsady ściągnięte z elektrody.

schemat
http://zapodaj.net/5255929a74640.jpg.html

'Zegar serce
 
$regfile = "m8def.dat"                                      'Atmega8
$crystal = 8000000                                          'Kwarc 8MHz
 
 
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.1 , Db6 = Portc.0 , Db7 = Portb.5 , E = Portc.3 , Rs = Portc.4
 
'************************************* I2C **************************************************************
 
Config Sda = Portd.4
Config Scl = Portd.3                                        'Złącze I2C - każda z lini podciągnięta do zasilania
 
Config I2cdelay = 100
 
'************************************* Przyciski ********************************************************
 
Config Pind.0 = Input                                       'Zmniejsz / Lewo / Tempmax i min
Config Pind.1 = Input                                       'Zatwierdź / menu
Config Pind.2 = Input                                       'Zwiększ / Prawo / LCD OFF i ON
 
Config Debounce = 10
 
'******************************* konfiguracja wyjść od RGB ***********************************************
Config Pinb.0 = Output
Config Pind.6 = Output
Config Pind.5 = Output
 
'************************************** 1 wire **********************************************************
 
Config 1wire = Portc.5                                      'Złącze do obsługi  DS18b20 podciągnięte do zasilania przy pomocy rezystora 4k7
 
'************************* Obsługa Timera do Sterowania podświetlaniem **********************************
 
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1       'pinb.1 jest od podświetlania LCD
 
S1 Alias Pind.0                                             'Zmniejsz / Lewo
S2 Alias Pind.1                                             'Zatwierdź / menu
S3 Alias Pind.2                                             'Zwiększ / Prawo
 
 
Declare Sub Wyslij                                          'Zapisuje wartości na PCF8583
Declare Sub Pokaz_czas                                      'Odczytuje wartości z PC88583 oraz z czujników temperatury
 
Deflcdchar 0 , 32 , 10 , 21 , 17 , 10 , 4 , 32 , 32         ' Znak serca
Deflcdchar 1 , 8 , 20 , 8 , 32 , 4 , 14 , 21 , 4            ' strzałka w góre
Deflcdchar 2 , 8 , 20 , 8 , 32 , 4 , 21 , 14 , 4            ' strzałka w dół
Deflcdchar 3 , 4 , 5 , 7 , 7 , 15 , 25 , 9 , 15             ' Dom lewy
Deflcdchar 4 , 32 , 16 , 24 , 28 , 30 , 19 , 18 , 18        ' dom prawy
Deflcdchar 5 , 4 , 14 , 27 , 14 , 4 , 1 , 7 , 32            ' Słońce lewe  - zmienia sie z księżycem
Deflcdchar 6 , 32 , 32 , 32 , 14 , 31 , 30 , 28 , 32        ' Słońce prawe
Deflcdchar 7 , 6 , 8 , 8 , 6 , 32 , 1 , 7 , 32              ' Księżyć lewy - zmienia się ze słońcem
 
 
'**************************************** Menu **********************************************************
Dim Menutext As String * 13                                 'Tekst menu. Maksymalnie 13 znaków
Dim J As Byte
 
Dim Menutext2 As String * 3                                 'Tekst menu2. Maksymalnie 3 znaków
Dim K As Byte
 
'********************************************************************************************************
 
Dim S As Byte                                               'deklaracja sekund
Dim M As Byte                                               'deklaracja minut
Dim H As Byte                                               'deklaracja godzin
Dim Day As Byte                                             'deklaracja dni
Dim Month As Byte                                           'deklaracja miesiecy
Dim Rok As Byte                                             'deklaracja roku
 
Dim Poprzedni_miesiac As Byte                               'dodatkowa zmienna
 
Dim A As Byte                                               'Zmienna od przesuwania ekranu startowego
Dim W As Byte                                               'Zmienna informująca o ilości czujników DS18b20
 
Dim Dsid1(8) As Byte                                        'deklaracja obsługi czujników DS18b20
Dim Dsid2(8) As Byte
Dim I1 As Integer , Ss As String * 6
Dim I2 As Integer
Dim I11 As Integer                                          ' przechowuje poprzednią wartoś temp
Dim I22 As Integer                                          ' przechowuje poprzednią wartoś temp
 
Dim T1max As Integer                                        'Przechowuje w pamięci SRAM wartość Temp 1 max
Dim T1min As Integer                                        'Przechowuje w pamięci SRAM wartość Temp 1 min
Dim T2max As Integer                                        'Przechowuje w pamięci SRAM wartość Temp 2 max
Dim T2min As Integer                                        'Przechowuje w pamięci SRAM wartość Temp 2 min
 
Dim P As Byte                                               'Moc świecenia podświetlania LCD w %
Dim Pp As Byte                                              'Przechowuje wartość PWM
Dim Rgb As Byte                                             'Przechowuje ustawienia RGB
 
Dim C As Byte                                               'Przechowuje wartość PWM przy uruchamianiu układu
 
Set Portd.0
Set Portd.1
Set Portd.2
 
'****************************** wartosci poczatkowe **************************************
Portb.0 = 0
 
S = 0
M = 0
H = 0
Day = 1
Month = 1
Readeeprom Rok , 2                                          'Czyta zaposaną wartość roku z 2 komórki pamięci EEPROM
 
T2min = 125 * 16
T1min = 125 * 16
'*************************************** Ekran startowy *************************************************************
Cls
Cursor Off
 
For C = 0 To 150
Pwm1a = C                                                   'Rozjaśnianie LCD od 0 do 100 (50% PWM)
Waitms 4
Next C
 
Locate 1 , 17
Lcd ">> Duch <<"
Locate 2 , 20
Lcd "2008"
 
For A = 1 To 13
Shiftlcd Left
Waitms 30                                                   'Schowanie tekstu
Next A
 
Wait 2
 
For A = 1 To 13
Shiftlcd Left
Waitms 30                                                   'Schowanie tekstu
Next A
 
For C = 150 To 0 Step -1
Pwm1a = C                                                   'Ściemnienie LCD od 100 do 0
Waitms 4
Next C
 
Waitms 500
Cls
 
Locate 1 , 1
Lcd Chr(0) ; " Zegar serce " ; Chr(0)                       'Tekst tytułowy na LCD
 
Gosub Rozjasnianie                                          'Idzie do procedury rozjaśniania wyświetlacza
 
Wait 2
 
Cls
'*************************************** 1 wire ********************************************************
 
W = 1wirecount()                                            'Informuje ile czujników jest podpiętych do układu (pojawia się tylko podczas włączania urządzenia)
Locate 1 , 1
Lcd "Ilosc czujnikow:"
Waitms 500
Locate 2 , 8
Lcd W                                                       'Wyświetla ilość czujników
 
Wait 3
 
Dsid1(1) = 1wsearchfirst()                                  'Znajdź pierwszy czujnik podpięty do portu
Dsid2(1) = 1wsearchnext()                                   'Znajdź następny czujnik podpięty do portu
 
 
'*************************************** Pętla główna **************************************************
'************************************* od tego miejsca w dół *******************************************
Pocz:
Cls
 
Do
Rgb = 1                                                     'Wartości początkowa opcji menu
 
J = 4
 
K = 1
 
Call Pokaz_czas                                             'Pokazuje czas i temperature
 
Debounce Pind.0 , 0 , Maxmin
Debounce Pind.1 , 0 , Menu                                  'Naciskając S2 wchodzimy do menu
Debounce Pind.2 , 0 , Display_off
 
 
Loop
 
End
 
'********************************************************************************************************
Sub Wyslij                                                  'Podprogram do wysyłania danych do pcf-a
 
S = Makebcd(s)
M = Makebcd(m)
H = Makebcd(h)                                              'Zamiana wartości dziesiętnych na kod BCD
Day = Makebcd(day)
Month = Makebcd(month)
 
I2cstart                                                    'Uruchomienie I2C
I2cwbyte 162                                                'Wybór urządzenia do zapisu
I2cwbyte &H02                                               'Wybór 2 rejestru do zapisu (sekundy)
I2cwbyte S                                                  'Zapisuje sekundy
I2cwbyte M                                                  'Zapisuje minuty
I2cwbyte H                                                  'Zapisuje godziny
I2cwbyte Day                                                'Zapisuje dni
I2cwbyte Month                                              'Zapisuje miesiąc
I2cstop                                                     'Koniec zapisu
 
End Sub
 
'************************************** I2C ****************************************************************
 
Sub Pokaz_czas                                              'Pokazuje czas
 
I2cstart
   I2cwbyte 162
   I2cwbyte &H00
   I2cwbyte &H08                                            ' włącza maskowanie roku i dnia tygodnia
   I2cstop
   I2cstart
   I2cwbyte 162
   I2cwbyte &H02
   I2cstart
   I2cwbyte 163
   I2crbyte S , Ack                                         'Odczytuje sekundy
   I2crbyte M , Ack                                         'Odczytuje minuty
   I2crbyte H , Ack                                         'Odczytuje godziny
   I2crbyte Day , Ack                                       'Odczytuje dni
   I2crbyte Month , Nack                                    'Odczutuje miesiąc
   I2cstop                                                  'koniec transmisji I2C
 
 
'************************************** 1 wire ***************************************************************
  Do
 
  '--------konwersja temp dla wszystkich dsow
   1wreset
   1wwrite &HCC
   1wwrite &H44
   Waitms 901                                               ' czekaj na konwersję temperatury (normalnie powinno być 750,
                                                             'ale jest ustawione na 901, aby nie kolidowało z odświeżaniem sekund)
 
 1wreset
   1wwrite &H55
   1wverify Dsid1(1)                                        'wysyłamy adres pierwszego czujnika
   1wwrite &HBE
   I1 = 1wread(2)
'---------------------------------
   1wreset
   1wwrite &H55
   1wverify Dsid2(1)                                        'wysylam adres drugiego czujnika
   1wwrite &HBE
   I2 = 1wread(2)
 '---------------------------------
 
 
   I1 = I1 * 10                                             'Konwersja
   I1 = I1 / 16
   Ss = Str(i1)
   Ss = Format(ss , " 0.0")                                 ' Format wyświetlania
 
 
   I2 = I2 * 10                                             'Konwersja
   I2 = I2 / 16
   Ss = Str(i2)
   Ss = Format(ss , " 0.0")                                 ' Format wyświetlania
 
 
'poniewaz dane odczytane z PCF-a sa w formacie kodu BCD, zamieniam ich wartosc na wartosc dziesietna:
 
S = Makedec(s)
M = Makedec(m)
H = Makedec(h)
Day = Makedec(day)
Month = Makedec(month)
 
 
'************** obsluga zmiany roku********************************************************
If Poprzedni_miesiac <> Month Then                          'sprawdzamy czy zmienil sie miesiac
   If Month = 1 And Day = 1 And H = 0 And M = 0 And S = 0 Then       'jesli miesiac zmienil sie na styczen , to zwiekszamy rok
      Incr Rok
      Writeeeprom Rok , 2
   End If
   Poprzedni_miesiac = Month
End If
'*********************** Wyświetlanie danych **************************************************
 
'Format Wyświetlania:
 Locate 1 , 1                                               'godziny
 If H < 10 Then                                             'Jeśli godzina jest mniejsza od 10 np. 7 to
   Lcd "0" ; H ; ":"                                        'dodaj przez 7 zero i wyświetl jako 07
   Else
   Lcd H ; ":"
 End If
 
 Gosub Symbol_dom
 
   Locate 2 , 11
   Lcd Chr(6)                                               'Wyświetlanie Znaku dnia i nocy (chodzi o symbol dworu)
 
   If H >= 6 And H < 21 Then
       Locate 2 , 10
       Lcd Chr(5)
       Else
       Locate 2 , 10
       Lcd Chr(7)
   End If
 
 Locate 1 , 4
   If M < 10 Then
   Lcd "0" ; M ; ":"                                        'minuty
   Else
   Lcd M ; ":"
 End If
 
 Locate 1 , 7
   If S < 10 Then
      Lcd "0" ; S ;                                         'sekundy
      Else
      Lcd ; S ;
 End If
 
 Locate 2 , 1
   If Day < 10 Then                                         'dni
      Lcd "0" ; Day ; "."
      Else
      Lcd Day ; "."
 End If
 
 Locate 2 , 4                                               'miesiąc
      If Month < 10 Then
      Lcd "0" ; Month ; "."
      Else
      Lcd Month ; "."
 End If
 
 
 If Rok > 99 Then
 Rok = 0
 Writeeeprom Rok , 2
 End If
 
 Locate 2 , 7
 If Rok < 10 Then                                           'rok
      Lcd "0" ; Rok
      Else
      Lcd Rok
 End If
 
   If I1 >= I11 Then                                        'format wyświetlania 1 czujnika ds18b20 wraz ze strzałkami
   Gosub Warunek1
   If I1 > 0 Then
   Gosub Format_wyswietlania1
   Gosub Wyswietlanie1
   Else
   Gosub Format_wyswietlania1
   Gosub Wyswietlanie1
   End If
   Else
   Gosub Warunek1
   If I1 > 0 Then
   Gosub Format_wyswietlania1
   Gosub Wyswietlanie2
   Else
   Gosub Format_wyswietlania1
   Gosub Wyswietlanie2
   End If
   End If
 
 
   If I2 >= I22 Then                                        'format wyświetlania 2 czujnika ds18b20 wraz ze strzałkami
   Gosub Warunek2
   If I2 > 0 Then
   Gosub Format_wyswietlania2
   Gosub Wyswietlanie1;
   Else
   Gosub Format_wyswietlania2
   Gosub Wyswietlanie1
   End If
   Else
   Gosub Warunek2
   If I1 > 0 Then
   Gosub Format_wyswietlania2
   Gosub Wyswietlanie2
   Else
   Gosub Format_wyswietlania2
   Gosub Wyswietlanie2
   End If
   End If
 
 
  If I1 < T1min Then T1min = I1
  If I1 > T1max Then T1max = I1
  If I2 < T2min Then T2min = I2
  If I2 > T2max Then T2max = I2
 
  If H = 23 And M = 59 And S = 59 Then
  T1min = I1
  T1max = I1
  T2min = I2
  T2max = I2
  End If
 
End Sub
 
 
Loop
 
Format_wyswietlania1:
Ss = Str(i1)
Ss = Format(ss , " 0.0")
Locate 1 , 12
Return
 
Format_wyswietlania2:
Ss = Str(i2)
Ss = Format(ss , "0.0")
Locate 2 , 12
Return
 
Wyswietlanie1:
Lcd Ss ; Chr(1)
Return
 
Wyswietlanie2:
Lcd Ss ; Chr(2)
Return
 
Warunek1:
I11 = I1
Return
 
Warunek2:
I22 = I2
Return
 
Symbol_dom:
   Locate 1 , 10
   Lcd Chr(3)
   Locate 1 , 11
   Lcd Chr(4)
Return
'****************************************************************************************************
Maxmin:
Cls
 
Do
 
If H >= 6 And H < 21 Then
       Locate 1 , 6
       Lcd Chr(5)
       Else
       Locate 1 , 6
       Lcd Chr(7)
   End If
 
Locate 1 , 7
Lcd Chr(6) ; "||"
Lowerline
Locate 2 , 8
Lcd "||"
Gosub Symbol_dom
 
Ss = Str(t2min)
Gosub Formatss
Locate 2 , 1
Lcd Ss
 
Ss = Str(t2max)
Gosub Formatss
Locate 1 , 1
Lcd Ss
 
Ss = Str(t1min)
Gosub Formatss
Locate 2 , 13
Lcd Ss
 
Ss = Str(t1max)
Gosub Formatss
Locate 1 , 13
Lcd Ss
 
Debounce S1 , 0 , Pocz
 
Loop
 
Formatss:
Ss = Format(ss , "0.0")
Return
'****************************************************************************************************
Menu:                                                       '
 
 
Cls
 
Menutext = Lookupstr(j , Menuopisy)                         'Wyświetla aktualnie wybraną wartość J i wyświetla ja w postaci tekstowej
Locate 2 , 2
Lcd Menutext
 
 
Do
Locate 1 , 1
Lcd " **** MENU **** "
 
Debounce S3 , 0 , Menuprawo
Debounce S1 , 0 , Menulewo
Debounce S2 , 0 , Menuenter
 
Loop
 
Menuenter:
 
Cls
Select Case J
Case 0
 Goto Menuzegar
Case 1                                                      ' W zależności jakie jest J, to wybiera odpowiednie menu.
 Goto Podswietlanie
Case 2
 Goto Rgbust
Case 3
 Goto Menuautor
Case 4
  Goto Pocz
End Select
 
Menuprawo:
'Cls
Incr J                                                      'Wzwiększanie wartości J
If J > 4 Then J = 0
Goto Menu
 
 
Menulewo:
'Cls
Decr J
J = J + 1
If J < 1 Then J = 5                                         'Zmniejszanie wartości J
J = J - 1
Goto Menu
 
'********************************************* Obsługa ustawiania zegara *********************************************
 
Menuzegar:
 
Do
 
If H > 23 Or M > 59 Then
H = 0                                                       'Procedura zabezpieczająca przed błędem związanym z nieuzasadnionym
M = 0                                                       'wzwiększaniem się godzin i minut ponad 23 godziny i ponad 59 minut
End If
 
Locate 1 , 3
Lcd "USTAW ZEGAR"
 
Locate 2 , 6
 If H < 10 Then
   Lcd "0" ; H ; ":"                                        'godziny
   Else
   Lcd H ; ":"
 End If
 
 Locate 2 , 9
   If M < 10 Then
   Lcd "0" ; M                                              'minuty
   Else
   Lcd M
 End If
 
 
Debounce S3 , 0 , Ustawmin
Debounce S1 , 0 , Ustawgodz
Debounce S2 , 0 , Zatwierdz_czas
 
 
Loop
 
Zatwierdz_czas:
Goto Menudata
 
Ustawmin:
Incr M : If M > 59 Then M = 0
S = 0                                                       'Wziększa wartość minut
 
Goto Menuzegar
 
Ustawgodz:
Incr H : If H > 23 Then H = 0                               'Wzwiększa wartość godzin
 
Goto Menuzegar
'********************************************* Obsługa ustawiania dnia i miesiąca *********************************************
 
Menudata:
 
If Day > 31 Or Month > 12 Then                              'To samo co przy godzinach
Day = 1
Month = 1
End If
 
Cls
 
Do
Locate 1 , 4
Lcd "USTAW DATE"
 
Locate 2 , 6
If Day < 10 Then
   Lcd "0" ; Day ; "."                                      'Format wyświetlania
   Else
   Lcd Day ; "."
 End If
 Locate 2 , 9
   If Month < 10 Then
   Lcd "0" ; Month
   Else
   Lcd Month
 End If
 
Debounce S1 , 0 , Ustawdni
Debounce S3 , 0 , Ustawmies
Debounce S2 , 0 , Zatwierdz_data
 
Loop
 
Zatwierdz_data:
Call Wyslij
Goto Menurok
 
Ustawdni:
Incr Day : If Day > 31 Then Day = 1                         'Wzwiększa wartość Dni
Goto Menudata
 
Ustawmies:
Incr Month : If Month > 12 Then Month = 1                   'Wziększa wartość Miesięcy
Goto Menudata
'********************************************* Obsługa ustawiania roku *********************************************
 
Menurok:
 
Cls
 
Do
Locate 1 , 4
Lcd "USTAW ROK"
 
Locate 2 , 7
Lcd "20"
 
Locate 2 , 9
If Rok < 10 Then
   Lcd "0" ; Rok ;
   Else
   Lcd Rok ;
 End If
 
Debounce S1 , 0 , Rokminus
Debounce S3 , 0 , Rokplus
Debounce S2 , 0 , Zatwierdz_rok
 
Loop
 
Zatwierdz_rok:
 
Writeeeprom Rok , 2                                         'Zapisuje wartość roku do EEPROMA
Goto Menu
 
 
Rokplus:
Incr Rok : If Rok > 99 Then Rok = 0                         'Wzwiększa wartość Roku od 0 do 99
Goto Menurok
 
Rokminus:
Rok = Rok + 1
Decr Rok : If Rok < 1 Then Rok = 100                        'Zmniejsza wartość roku w przedziale od 99 do 0
Rok = Rok - 1
Goto Menurok
 
'********************************************* Wyświetla informacje o autorze *********************************************
Menuautor:
 
Locate 1 , 6
Lcd "DATA:"
 
Locate 2 , 4
Lcd "25.07.2008"
 
Wait 3
 
Locate 1 , 6                                                'Od autorskie informacje
Lcd "AUTOR:"
 
Locate 2 , 1
Lcd "Duch__"
 
Wait 3
 
Do
Cls
Locate 1 , 2
Lcd "www.duchftp.w8w.pl <script type="text/javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%64%75%73%7a%6b%6f%77%73%6b%69%40%6f%32%2e%70%6c%22%3e%64%75%73%7a%6b%6f%77%73%6b%69%40%6f%32%2e%70%6c%3c%2f%61%3e%27%29%3b'))</script>"                   'Ta część tekstu była inny więc przesuwanie może się rozjechać
 
For A = 0 To 44
                                                             'Przesuwa LCD
Debounce S2 , 0 , Menu
 
Shiftlcd Left
Waitms 400
Next A
 
Loop
 
 
'********************************************* Obsługa podświetlania LCD *********************************************
 
Podswietlanie:
Readeeprom Pp , 1
Goto Ustaw_podsw
'______________________________________________________________________________
Ustaw_podsw:
Do
 
Pp = Pwm1a
                                                              'Przelicza wartość PWM na procenty
P = Pwm1a / 2
 
Locate 1 , 2
Lcd "PODSWIETL.LCD"
 
If Pwm1a >= 200 Then                                        'Ograniczenie programowe maksymalnego PWM do 200 (normalnie jest 255)
Pwm1a = 200
End If
 
Locate 2 , 7
 If P < 10 Then
   Lcd "  " ; P
   Else                                                     'podświetlanie w procentach
      If P < 100 Then
      Lcd " " ; P
      Else
      Lcd P
      End If
End If
 
Locate 2 , 10
Lcd "%"
 
If S1 = 0 Then
Goto Podswietlanieminus
End If
 
If S3 = 0 Then
Goto Podswietlanieplus
End If
 
Debounce S2 , 0 , Zatwierdz_podsw
 
Loop
 
Podswietlanieplus:
Incr Pwm1a : If Pwm1a > 200 Then Pwm1a = 200                'Wzwiększa wartość Podświetlania od 0% do 100%
Goto Podswietlanie
 
Podswietlanieminus:
Pwm1a = Pwm1a + 1
Decr Pwm1a : If Pwm1a < 1 Then Pwm1a = 1                    'Zmniejsza wartość Podświetlania w przedziale od 100% do 0%
Pwm1a = Pwm1a - 1
Goto Podswietlanie
 
Zatwierdz_podsw:
Writeeeprom Pp , 1                                          'Zapis wartości podświetlania do EEPROM-a
Goto Menu
 
'********************************************* Obsługa podświetlania RGB *********************************************
 
Rgbust:
Cls
 
Do
 
Debounce S1 , 0 , Rgbminus
Debounce S3 , 0 , Rgbplus
Debounce S2 , 0 , Menu
 
Locate 1 , 2
Lcd "PODSWIETL.RGB"
 
 
If Rgb = 1 Then
   Locate 2 , 4
   Lcd "Wylaczone"
   Portb.0 = 0                                              'Ustawia stan niski na B.0 który jest podłączony do RESET-a w Attiny2313
End If
 
If Rgb = 2 Then
   Locate 2 , 6
   Lcd "Tecza"                                              'Tryb pierwszy
   Portb.0 = 1
   Portd.6 = 0
   Portd.5 = 0
End If
 
If Rgb = 3 Then
   Locate 2 , 3
   Lcd "Tecza losowo"                                       'Tryb drugi
   Portb.0 = 1
   Portd.6 = 0
   Portd.5 = 1
End If
 
If Rgb = 4 Then
   Locate 2 , 5
   Lcd "Skokowo"                                            'Tryb trzeci
   Portb.0 = 1
   Portd.6 = 1
   Portd.5 = 1
End If
 
Loop
 
Rgbplus:
 
Incr Rgb : If Rgb > 4 Then Rgb = 1
Goto Rgbust
 
Rgbminus:
 
Decr Rgb : If Rgb < 1 Then Rgb = 4
Goto Rgbust
 
'********************************************* Obsługa wyłączania LCD *********************************************
 
Display_off:
 
Do
 
Cls
 
Locate 1 , 6
Lcd "LCD OFF"
Wait 1
Cls
Locate 1 , 5
Lcd ">LCD OFF<"
Waitms 200
Cls
Locate 1 , 6
Lcd ">CD OF<"
Waitms 200
Cls
Locate 1 , 7
Lcd ">D O<"
Waitms 200
Cls
Locate 1 , 8
Lcd "> <"
Waitms 200
Cls
Readeeprom Pp , 1
 
For C = Pp To 0 Step -1
Pwm1a = C
Waitms 4                                                    'Zciemnianie wyświetlacza od wartości podświetlania (pp) do 0
Next C
 
Cls
 
Display Off                                                 'Wyłącza wyświetlanie czegokolwiek na wyświetlaczu
 
Goto Czekajna
 
Loop
'********************************************* Obsługa wyłączonego LCD *********************************************
 
Czekajna:
Do
Debounce S3 , 0 , Display_on                                'Jeśli naciśniemy przycisk Menu to przechodzimy do procedury od włączania podświetlania.
Loop
 
'********************************************* Obsługa włączania LCD *********************************************
 
Display_on:
Do
Display On
 
Gosub Rozjasnianie                                          'Idzie do procedury rozjaśniania wyświetlacza
 
Locate 1 , 8
Lcd "< >"
Waitms 200
Cls
Locate 1 , 7
Lcd "<D O>"
Waitms 200
Cls
Locate 1 , 6
Lcd "<CD ON>"
Waitms 200
Cls
Locate 1 , 5
Lcd "<LCD ON >"
Waitms 200
Cls
Locate 1 , 6
Lcd "LCD ON"
Wait 1
 
Goto Pocz
Loop                                                        'Idź na początek programu
 
'********************************************* Dane *********************************************
 
Menuopisy:
Data " ZEGAR / DATA" , "PODSWIETL.LCD" , "PODSWIETL.RGB" , "    AUTOR" , "    WYJDZ"       'Nazyw menu
 
 
Rozjasnianie:
Readeeprom Pp , 1
For C = 0 To Pp
Pwm1a = C
Waitms 4                                                    'Procedura rozjaśniania wyświetlacza od 0 do wartości PP
Next C
 
'********************************************* Koniec programu *********************************************




Portret użytkownika mirley

RE: Ds

Czujniki Ds nie są czytane losowo i zależy to napewno od numeru seryjnego. Więc jeśli raz odczytasz je w pewnej kolejności to już tak powinno zostać. Co do alarmu temperatury to w miejscu:

   I2 = I2 * 10                                             'Konwersja
   I2 = I2 / 16
 
   if I2 > 800 then Portx.y = 0 else portx.y = 1

W programie nie widze taktowania timerem więc tak to będzie działało. Sygnał ciągły (zwarcie do masy) pojawi się po przekroczeniu 80 stopni na pinie portx.y

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.