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
 slot 0 

 _triggerUltrasuoni 
 
 slot A0 

 _RicUltrasuoni 
 
 slot 7 

 _ricevitoreIR 
 
 slot 8 

 _motoreSxAbilita 
 
 slot 9 

 _motoreSxIndietro 
 
 slot 10 

 _motoreSxAvanti 
 
 slot 11 

 _motoreDxIndietro 
 
 slot 12 

 _motoreDxAvanti 
 
 slot 13 

 _motoreDxAbilita 
 
 slot 2 

 _occhi_verde 
 
 slot 3 

 _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