CONST DEVICE = R5 'Programme de test du sonar MSU04* avec un PICBASIC 2000*. 'ecran LCD 2x16 sur PICBUS 'sonar IN sur port P0 sur PICBASIC 2000* 'sonar OUT sur port P1 sur PICBASIC 2000* 'buzzer sur port P2 sur PICBASIC 2000* 'Copyright http://arn.gui.free.fr/picbasic '* produit disponible sur www.lextronic.fr SET PICBUS HIGH SET RS232 9600 LCDINIT CSROFF DIM DISTANCE AS INTEGER ' distance sonar en cm DIM D AS BYTE ' Variable a tout faire DIM A AS INTEGER BUSOUT &HA5,1,6,6,12,23,4,10,17,0 ' petit bonhomme BUSOUT &HA5,3,8,12,15,31,15,12,8,0 ' Petite Haut Parleur BUSOUT &HA5,5,31,16,16,16,16,16,16,31 ' dedut du bargraph BUSOUT &HA5,6,31,0,0,0,0,0,0,31 ' partie central bargraph BUSOUT &HA5,7,31,1,1,1,1,1,1,31 ' fin du bargraph CLS DISTANCE = 0 1701 'mesure de distance OUT 0,0 PULSE 0,10 DISTANCE=CAPTURE(1,1) DISTANCE=DISTANCE/8 A=DISTANCE/3 D=7 'animation LOCATE 9,0 BUSOUT &HA2,&H03,&H00 'haut parleur SOUND 2,14,8 'ping 1710 LOCATE D,0 PRINT "( " DELAY 70 D=D-1 IF D>0 THEN GOTO 1710 IF DISTANCE > 300 then goto 2000 1800 'si distance < LOCATE 0,0 BUSOUT &HA2,&H01,&H00 'affichage petit sous marin SOUND 2,20,5 LOCATE 11,0 PRINT DISTANCE,"cm " LOCATE 0,1 PRINT "3" LOCATE 1,1 1750 IF DISTANCE >298 THEN GOSUB 5000 ELSE GOSUB 10000 IF DISTANCE >275 AND DISTANCE < 300 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >252 AND DISTANCE < 276 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >229 AND DISTANCE < 253 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >206 AND DISTANCE < 230 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >183 AND DISTANCE < 207 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >160 AND DISTANCE < 184 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >137 AND DISTANCE < 161 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >114 AND DISTANCE < 138 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >91 AND DISTANCE < 115 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >68 AND DISTANCE < 92 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >45 AND DISTANCE < 69 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >22 AND DISTANCE < 46 THEN GOSUB 5000 ELSE GOSUB 10001 IF DISTANCE >0 AND DISTANCE < 23 THEN GOSUB 5000 ELSE GOSUB 10002 PRINT "0" FOR D=0 TO 8 LOCATE D,0 PRINT " )" LOCATE 0,0 BUSOUT &HA2,&H01,&H00 DELAY A NEXT D LOCATE 0,0 PRINT " " GOTO 1701 2000 ' si distance > 3" LOCATE 0,0 PRINT " " LOCATE 11,0 PRINT " " LOCATE 0,1 PRINT "pas d'obstacle !" DELAY 600 GOTO 1701 ' =========== SOUS PROGRAMMES SECONDIARES=========== 5000 BUSOUT &HA2,&HFF,&H00 ' Affiche un carré Noir RETURN 10000 BUSOUT &HA2,&H05,&H00 ' Affiche debut du bargraph RETURN 10001 BUSOUT &HA2,&H06,&H00 ' Milieu du bargraph vide RETURN 10002 BUSOUT &HA2,&H07,&H00 ' Fin du Bargraph RETURN