Recherche de la ligne

La première phase de déplacement du robot est la recherche de la ligne.
En effet, le robot est lancé du milieu du plateau en direction de la ligne, et doit donc être capable "d'accrocher" la ligne à chaud.

Logigramme

Organigramme

Code source

seek0
;démmarage des moteurs
	bsf	MOT_D_1		;Allumer le moteur droit dans le sens1
	bsf	MOT_G_1		;Allumer le moteur gauche dans le sens1
;récupérage de la ligne
	movlw	B'00000011'	; Valeur des flags
				;(B0=0 => déja vu à D et D1 à G)
				;(B2=0 => premier cycle)
	movwf	rotled		; Affectation à rotled
  	;initialisation des flags

seek1				;boucle d'avance, la ligne n'a pas
				;encore été détectée

	btfsc	CAP_L_G		; Si ligne détectée à gauche
	bcf	rotled,1	; flag ligne G à 0

	btfsc	CAP_L_D		; Si ligne détectée à droite
	bcf	rotled,0        ; flag ligne D à 0


	btfsc	rotled,0	; Si ligne pas encore franchie à D
	goto	seek1		; Reboucler
	btfsc	rotled,1	; Si ligne pas encore franchie à G
	goto	seek1		; Reboucler


	btfsc	rotled,2	; Si fin de la deuxième phase
	goto	fseek		; Reboucler


	bcf	MOT_D_1		;Étteindre le moteur droit dans le sens1
	bcf	MOT_G_1		;Étteindre le moteur gauche dans le sens1
	movlw	20		; pour 2 boucles
	movwf	nb_tempo	; Affectation à nombre de tempo
	call 	tempo		; appeler la tempo

	bsf	MOT_G_1		; Allumer le moteur gauche dans le sens1
	bsf	MOT_D_2		; Allumer le moteur droit dans le sens2

				;Pour se remettre dans le sens de la ligne

	movlw	B'00000111'	; Valeur des flags
	movwf	rotled		; Affectation à rotled

	goto	seek1		; Reboucler

fseek