LEZIONE 45

TUTTI I SENSORI

Realizziamo un programma che faccia cercare la luce al microrobot per ricaricarsi e nel tragitto per raggiungerlo eviti gli ostacoli.


#CHIP 16F84, 4 				'Tipo di PIC utilizzato
DIR PORTA OUT 				'Definisco le porte d'uscita
DIR PORTB IN 				'e d'ingresso

DIM Valore as BYTE		'Variabile sensori

Ciclo: 				'Se c'è un ostacolo valuto cosa fare
	'Meccanico sinistra
	IF PortB.2 = 1 THEN GOTO SINISTRA
	'Meccanico destra
	IF PortB.3 = 1 THEN GOTO DESTRA
	'Ottico sinistra e destro attivi
	Valore = Portb & b'00110000'
	IF Valore = b'00000000' THEN GOTO AVANTI
	'Ottico sinistra e destro disattivi
	Valore = Portb & b'00110000'
	IF Valore = b'00110000' THEN GOTO AVANTI
	'Ottico sinistra
	IF PortB.4 = 0 THEN GOTO LUCESINISTRA
	'Ottico destra
	IF PortB.5 = 0 THEN GOTO LUCEDESTRA
	'Se non c'è nessun ostacolo vado avanti
	GOTO AVANTI
GOTO Ciclo

DESTRA:				'Il microrobot va indietro
	PortA = b'00000110'	'Attende pochi secondi
	WAIT 1 sec		'Il microrobot gira a destra
	PortA = b'00000101'	'Attende pochi secondi
	WAIT 1 sec		'Salta all'inizio del programma
GOTO Ciclo

SINISTRA: 			'Il microrobot va indietro
	PortA = b'00000110' 	'Attende pochi secondi
	WAIT 1 sec		'Il microrobot gira a sinistra
	PortA = b'00001010'	'Attende pochi secondi
	WAIT 1 sec 		'Salta all'inizio del programma
GOTO Ciclo 

LUCEDESTRA:			'Il microrobot gira a destra
	PortA = b'00000101'	'Attende pochi secondi
	WAIT 1 sec		'Salta all'inizio del programma
GOTO Ciclo 

LUCESINISTRA:			'Il microrobot gira a sinistra
	PortA = b'00001010'	'Attende pochi secondi
	WAIT 1 sec		'Salta all'inizio del programma
GOTO Ciclo 

AVANTI:				'Il microrobot va avanti
	PortA = b'00001001'	'Attende pochi secondi
	WAIT 1 sec		'Salta all'inizio del programma
GOTO Ciclo 

END 				'Fine del programma

In questo programma si controllano costantemente i sensori meccanici e quelli ottici e si decide cosa fare in base al loro stato.
Da notare l’istruzione

Valore = Portb & b'00110000'
IF Valore = b'00000000' THEN GOTO AVANTI

ed

Valore = Portb & b'00110000'
IF Valore = b'00110000' THEN GOTO AVANTI

che servono per determinare quando tutti e due i sensori ottici sono attivi o disattivi.

Una cosa molto importante è determinare ogni singola possibilità o evento che possa accadere, in modo da non lasciare al caso un eventuale evento.
Se provate a cancellare le istruzioni sopra citate vedrete che il robot funzionerà in modo anomalo, perché in quelle condizioni non saprà cosa fare.

LEZIONE 46
LEZIONE 44