Al programma della lezione precedente aggiungiamo ora un sensore ad ultrasuoni. A meno di x centimetri di distanza da un ostacolo facciamolo arretrare di un po'. Il robottino vi sembrerà ora avere un po' di vita propria... disobbedirà ai vostri ordini e si rifiuterà di andare a sbattere!
attrezzaggio
pin0

_triggerUltrasuoni
pinA0

_RicUltrasuoni
pin7

_ricevitoreIR
pin8

_motoreSxAbilita
pin9˜

_motoreSxIndietro
pin10˜

_motoreSxAvanti
pin11˜

_motoreDxIndietro
pin12

_motoreDxAvanti
pin13

_motoreDxAbilita
pin2

_occhi_verde
pin3˜

_occhi_rosso
variabili
durata = 0
distanza = 0
t1 = -32131
t2 = -28051
t3 = -26011
giu = -26521
su = -10201
dx = 30855
sx = 16575
ok = 22695
tasto = 0
ciclo
la variabile tasto diventa uguale a... leggi dal sensore: _ricevitoreIR

attendi
500 millisecondi
SE ACCADE CHE
tasto è uguale a su
aziona la funzione: avantiDx
aziona la funzione: avantiSx
SE ACCADE CHE
tasto è uguale a giu
aziona la funzione: indietroDx
aziona la funzione: indietroSx
SE ACCADE CHE
tasto è uguale a sx
aziona la funzione: avantiDx
aziona la funzione: indietroSx
SE ACCADE CHE
tasto è uguale a dx
aziona la funzione: indietroDx
aziona la funzione: avantiSx
SE ACCADE CHE
tasto è uguale a ok
aziona la funzione: ferma

attendi
100 millisecondi
ACCENDI (5 Volt)
_triggerUltrasuoni

attendi
10 millisecondi
SPEGNI (0 Volt)
_triggerUltrasuoni

la variabile
durata diventa uguale alla durata dell'impulso dal sensore:
_RicUltrasuoni
la variabile distanza è uguale alla espressione durata*0.01720
SE ACCADE CHE
distanza è minore di 30
SPEGNI (0 Volt)
_occhi_verde
ACCENDI (5 Volt)
_occhi_rosso
aziona la funzione: indietroDx
aziona la funzione: indietroSx

attendi
1000 millisecondi
aziona la funzione: ferma

attendi
1000 millisecondi
avantiDx con
0 input
ACCENDI (5 Volt)
_motoreDxAbilita
ACCENDI (5 Volt)
_motoreDxAvanti
SPEGNI (0 Volt)
_motoreDxIndietro
avantiSx con
0 input
ACCENDI (5 Volt)
_motoreSxAbilita
ACCENDI (5 Volt)
_motoreSxAvanti
SPEGNI (0 Volt)
_motoreSxIndietro
indietroDx con
0 input
ACCENDI (5 Volt)
_motoreDxAbilita
SPEGNI (0 Volt)
_motoreDxAvanti
ACCENDI (5 Volt)
_motoreDxIndietro
indietroSx con
0 input
ACCENDI (5 Volt)
_motoreSxAbilita
SPEGNI (0 Volt)
_motoreSxAvanti
ACCENDI (5 Volt)
_motoreSxIndietro
ferma con
0 input
SPEGNI (0 Volt)
_motoreDxAbilita
SPEGNI (0 Volt)
_motoreSxAbilita