;chauffage solaire douche piscine 21/06/25
;T panneau par thermocouple et liaison RS232
;Identifiant =123
;Affichage Tpamax , Tpamin , idem Tbalon
#picaxe 20M2
setfreq M16
symbol LCD=B.0
symbol circBal=pinB.1
symbol Pbal=B.5
symbol RAZ=pinC.0
symbol DSbalon=C.5
symbol pano=C.7
symbol def =bit0
symbol Tpano =b1
symbol Tbalon =b2
symbol Cbalon =b3
symbol varb =b4
symbol memoTpano=b5
symbol Tpamin=b6
symbol ident =b7
symbol cpt =b8
symbol affcirc=b9
symbol Tpamax=b10
symbol Tbamax=b11
symbol Tbamin=b12
symbol baud =N2400_16
symbol baudT =T2400_16
dirsC=%0
dirsB=%00011111
pullup %1111111100000000
;****************************************
pause 500
serout LCD, baud,(254,1) ;clean LCD
serout LCD, baud,(254,132,"Tpa Tba Cba P")
serout LCD, baud,(254,192,"Tß") ;ß=alt+0223 => ° sur LCD
serout LCD, baud,(254,148,"MAX ",254,212,"MIN ")
def=0 : ident=123 :Tpamin=255 : Tbamin=255
do
memoTpano=Tpano
serin [20000,erreur],C.7,baudT,Tpano,def,ident ;reception Tpano,def,ident timeout 5s
;Tpano=120 : def=0 : ident=123 ;pour simu
if def=1 and ident=123 then erreur
if ident<>123 then;si iden non reconnu, on garde l'ancienne valeur
Tpano=memoTpano
endif
readtemp DSbalon,Tbalon ;sur C.5
readadc Pbal, Cbalon
Cbalon= 55 * Cbalon/250 +40
serout LCD, baud,(254,196,#Tpano," ",254,201,#Tbalon," ", 254,206,#Cbalon," ")
pause 200
if Tpano> Tpamax then
Tpamax=Tpano
endif
if Tpano<Tpamin then
Tpamin=Tpano
endif
if Tbalon>Tbamax then
Tbamax=Tbalon
endif
if Tbalon<Tbamin then
Tbamin=Tbalon
endif
if RAZ=0 then
do loop while RAZ=0
Tpamax=Tpano
Tpamin=Tpano
Tbamax=Tbalon
Tbamin=Tbalon
endif
serout LCD, baud,(254,152,#Tpamax," ",254,157,#Tbamax,254,216,#Tpamin," ",254,221,#Tbamin)
gosub gescirc
loop
;*********************************************
gescirc:
if Tbalon>=90 or Tbalon>=Tpano then
circBal=0 : affcirc="A"
endif
varb=Tbalon+5
if Tpano > varb and Cbalon > Tbalon then
circBal=1 :affcirc="M"
else circBal=0
affcirc= "A"
endif
serout LCD,baud,(254,211,affcirc)
return
erreur:
if def <> 0 then
serout LCD,baud,(254,148,"ERR THERMOCOUPLE ")
else
serout LCD,baud,(254,148,"ERR TEMPS MAX ")
endif
serout LCD,baud,(254,212,"appuyer sur RAZ ")
do loop while RAZ=1 ;attente appui
do loop while RAZ=0 ;attente relachement
reset ;reset programme