1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
| Const DEVICE = 3B
CONST TXD = 9
CONST RXD = 8
CONST BDS = 103 'Vitesse de transmission (103=9600bds/50=19200bds)
DIM V AS INTEGER
DIM i AS BYTE
DIM j AS BYTE
DIM s AS BYTE
DIM n AS BYTE
DIM D AS INTEGER
DIM inv AS BYTE
DIM cd AS BYTE
DIM HUM(32)AS BYTE ' Dimension = (VAL+1)*8
DIM IND AS BYTE
DIM INF AS BYTE
DIM SUP AS BYTE
DIM SOM AS INTEGER
DIM VAL AS BYTE
DIM FIN AS BYTE
D=2200
n=0
i=0
inv=0
VAL=3 ' Nombre de valeurs pour la moyenne
ATT:
cd=cd+1
if cd>1 then cd=0
'Valeurs des sorties A,B,C,D
if inv=0 then
n=n+1
end if
if n>11 then n=0
'i=TABLE(n,0,9,7,1,8,3,2,9,7,4,8,3,5,9,7,6,8,3)
i=TABLE(n,0,7,1,3,2,7,4,3,5,7,6,3)
'Quartet de poids fort
j=i * 16
'Activation D du code ABCD
if cd=1 then j=j+128
'Ecriture sur les sorties logiques
BYTEOUT 1,j
DELAY D
'ASCII de i = 73 = TG
s=73+cd
'Lecture TG ou TD
V=ADIN(3)/4
'Noms des sondes I ou J
SEROUT TXD,BDS,0,0,[s,DEC(V),59]
if cd=1 then
j=j-128
else
j=j+128
end if
'Ecriture sur les sorties logiques
BYTEOUT 1,j
DELAY D
'Noms des sondes A,B,C....
s=TABLE(i,65,66,67,68,69,70,71,72)
LECTURE :
'Lecture des humidités
if inv=0 then
IND=i*(VAL+1)
IF HUM(IND)>20 THEN
INF=HUM(IND)-20
ELSE
INF=0
END IF
IF HUM(IND)<235 THEN
SUP=HUM(IND)+20
ELSE
SUP=255
END IF
V=ADIN(0)/4
HUM(IND)=V
FIN=IND+VAL
SOM=0
IF HUM(FIN)=0 THEN
FOR I=1 TO VAL
SUP=I+IND
HUM(SUP)=V
NEXT I
ELSE
IF V < INF then GOTO ENVOI
IF V > SUP then GOTO ENVOI
END IF
FOR I=1 TO VAL
SUP=IND+VAL+1-I
INF=SUP-1
HUM(SUP)=HUM(INF)
NEXT I
ENVOI:
FOR I=1 TO VAL
SUP=IND+I
SOM=SOM+HUM(SUP)
NEXT I
V=SOM / VAL
'Noms des sondes A,B,C....
SEROUT TXD,BDS,0,0,[s,DEC(V),59]
inv=1
out 17,1
else
inv=0
out 17,0
end if
GOTO ATT |