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

News

Aggiunto il programma sulla telemetria (in fase di sviluppo).
Aggiunto il forum. Temporaneamente abilitato solo a persone autorizzate.
Aggiunta la pagina con qualche datasheet nella sezione elettronica.
Aggiunto il tutorial Snail un line follower base con Arduino Nano.
Recupero di un LCD da 272X204 pixel.