; Affiche minimum et maximum***********************
; Lusage de la flèche ".>" permet d'indiquer à l'invité s'il s'agit d'un nouveau record.
AfficheRecord:
car= 159 'curseur ligne 3, position 12
gosub EnvoiByteComm
if maxi =0 or maxi > today then
bintoascii maxi,b5,b4,b3,b2,b1
for cpt=0 to 8
lookup cpt,(". ",b2,",",b1," L"),car ;on enlève les symboles ">>"
GOSUB EnvoiByteData
next
else if maxi > 999 then
bintoascii maxi,b5,b4,b3,b2,b1
for cpt=0 to 8
lookup cpt,(".>",b4,b3,b2,",",b1," L"),car ;on a besoin que de 4 chiffres
GOSUB EnvoiByteData
next
else if maxi> 99 then
bintoascii maxi,b5,b4,b3,b2,b1
for cpt=0 to 8
lookup cpt,(".> ",b3,b2,",",b1," L"),car ;on a besoin que de 3 chiffres
GOSUB EnvoiByteData
next
else
bintoascii maxi,b5,b4,b3,b2,b1
for cpt=0 to 8
lookup cpt,(".> ",b2,",",b1," L"),car ;on a besoin que de 2 chiffres
GOSUB EnvoiByteData
next
endif
car= 223 'curseur ligne 4, position 12
gosub EnvoiByteComm
if mini > 9999 or mini <> today then ;Condition de départ OU aucun record enregistré
bintoascii mini,b5,b4,b3,b2,b1
for cpt=0 to 8
lookup cpt,(". ",b2,",",b1," L"),car
GOSUB EnvoiByteData
next
else if mini > 999 then
bintoascii mini,b5,b4,b3,b2,b1
for cpt=0 to 8
lookup cpt,(".>",b4,b3,b2,",",b1," L"),car ;on a besoin que de 4 chiffres
GOSUB EnvoiByteData
next
else if mini> 99 then
bintoascii mini,b5,b4,b3,b2,b1
for cpt=0 to 8
lookup cpt,(".> ",b3,b2,",",b1," L"),car ;on a besoin que de 3 chiffres
GOSUB EnvoiByteData
next
else
bintoascii mini,b5,b4,b3,b2,b1
for cpt=0 to 8
lookup cpt,(".> ",b2,",",b1," L"),car ;on a besoin que de 2 chiffres
GOSUB EnvoiByteData
next
endif
return
calib: ; routine de calibration obligatoire. Le débitmètre utilisé est -12% plus bas quespécifié dans la doc du manufacturier.
car= 128 'curseur début ligne 1, colonne 1
gosub EnvoiByteComm
for cpt=0 to 19
lookup cpt, ("Calibration requise "),car
GOSUB EnvoiByteData
next
car= 192 'curseur ligne 2, colonne 1
gosub EnvoiByteComm
for cpt=0 to 19
lookup cpt, ("Ajoutez 1 litre d'O "),car
GOSUB EnvoiByteData
next
car= 148 'curseur ligne 3, colonne 1
gosub EnvoiByteComm
for cpt=0 to 19
lookup cpt,("Impulsions= "),car
GOSUB EnvoiByteData
next
car= 212 'curseur ligne 4, colonne 1
gosub EnvoiByteComm
for cpt=0 to 19
lookup cpt,("Etalon calcule= "),car
GOSUB EnvoiByteData
next
pause 8000
do
if calibration=0 then ; le poussoir enregistre la fin du cycle de comptage et calcule l'etalon. Il est sur C.4
etalon = total+5/10 ; le "+5" est pour compenser l'erreur d'arrondis des PICAXEs
Write 8, etalon
gosub AfficheCalib ; pour voir la valeur de l'étalon
pause 8000
time = 0 : mini = 10000 : total = 0 : today = 0 : impulsions = 0 ; remet toute les valeurs à zéro pour débuter le comptage réel.
goto main
endif
gosub AfficheCalib ; sous-routine de la consommation d'eau.
loop
return
;
AfficheCalib: ; affiche les données de l'étalonnage
car= 164 'curseur ligne 3, colonne 16
gosub EnvoiByteComm
bintoascii total,b5,b4,b3,b2,b1
for cpt=0 to 3
lookup cpt,(b4,b3,b2,b1),car ;on a besoin que de 4 chiffres
GOSUB EnvoiByteData
next
car= 228 'curseur ligne 4, colonne 16
gosub EnvoiByteComm
bintoascii etalon,b5,b4,b3,b2,b1
for cpt=0 to 3
lookup cpt,(b4,b3,b2,b1),car ;on a besoin que de 4 chiffres
GOSUB EnvoiByteData
next
return
; Sub envoi vers LCD via I2C ************* ; copié du programme des sondes capacitives de MGU.
EnvoiByteCommInit:
pause 15
EnvoiByteComm:
rsbit=0
EnvoiByteData:
;1ére moitié
dat=car & $F0 | %1000 | rsbit ;%1000 pour l'éclairage
hi2cout (dat)
pause 1
dat=dat | %1100
hi2cout (dat) ;pulse sur E cad P2
pause 1
dat=dat | %1000 & %1011 ;fin pulse
hi2cout (dat)
pause 1
;2éme moitié
dat=car & $0F * 16 | %1000 | rsbit
hi2cout (dat)
pause 1
dat=dat | %1100
hi2cout (dat)
pause 1
dat=dat | %1000 & %1011
hi2cout (dat)
rsbit=1
return