INTRODUZIONE AL CODING
Sofia P.
Ciao!
Sono Sofia e sono qui per insegnarti le basi della programmazione a blocchi con Spike 3.0.
In Questa lezione ti spiegherò i blocchi che utilizzeremo per tutto il corso e ti insegnerò le funzionalità della nuova app oltre a spiegarti le logiche di base per comprendere il funzionamento dei robot che partecipano a First Lego League .
Ti consiglio di leggere questa lezione con il tuo robot e un dispositivo per programmare, va bene sia il tablet che il computer.
Durante la lezione non aver timore di sperimentare quello che stai imparando, nella programmazione si impara moltissimo dai propri errori.
Introduzione
Per cominciare devi scaricare l'app Spike 3.0 dallo store del tuo dispositivo, a lato trovi il link diretto alla pagina dello store.
Bene ora che hai installato l'applicazione possiamo cominciare, aprila e seleziona Prime.
Ora dovresti vedere la schermata principale dell' app, seleziona nuovo progetto quindi "blocchi parole" e crea.
Terminata l'operazione compare la schermata del progetto, nella parte superiore troviamo la barra con i progetti aperti e il tasto Home mentre in basso abbiamo i comandi per la visuale, per la modifica e per avviare il programma.
La barra di sinistra invece quella che contiene tutti i blocchi di programmazione che puoi utilizzare e che vedremo tra poco
Quando cominci a scrivere un programma devi sempre mantenere il progetto organizzato, questo ti aiuterà ad orientarti al meglio durante la fase di debug.
Per cominciare rinominiamo il progetto. Clicca sui puntini accanto al nome del progetto quindi rinomina progetto "Introduzione". In questo modo se dovessi riguardare questo programma potrai trovarlo facilmente dall'elenco dei progetti.
Per connettere il robot clicca sul pulsante in altro e segui le indicazione dell'applicazione, se il tuo robot è nuovo potresti dover effettuare l'aggiornamento. Una volta connesso il robot i bottoni in basso a destra si illuminano e potrai caricare il programmo con un semplice tocco.
Categorie di blocchi
I blocchi Motore in blu permettono di controllare i singoli motori del robot.
I blocchi Movimento in rosa comandano simultaneamente i due motori dedicati al movimento permettendoci di gestire in modo più semplice i movimenti.
I blocchi Luce in viola sono dedicati alla gestione del display mentre quelli dedicati ai Suoni sono colorati in viola chiaro.
I blocchi Evento in giallo sono quelli che ci permettono di determinare quando vengono eseguite le parti di codice che scriviamo
I blocchi di Controllo sono i blocchi che ci permettono di creare dei cicli o di far prendere al nostro robot delle decisioni.
I blocchi Sensori in azzurro sono quelli che utilizzeremo per leggere i valori misurati da nostri sensori.
I blocchi Operatore in verde sono tutti i blocchi che ci permettono di effettuare operazioni logiche o matematiche.
I blocchi Variabili in arancione contengono tutte le variabili che definiremo noi e i blocchi che ci permettono di modificarle.
la sezione I miei blocchi conterrà tutti io blocchi che andremo a definire e personalizzare noi
Blocchi Motore
Tra i blocchi Motore troviamo due diverse tipologie, la maggior parte di questi hanno la classica forma rettangolare.
Tutti i blocchi di forma rettangolare sono blocchi operazione e sono pensati per essere agganciati ad un altro blocco che li precede.
I blocchi di questo tipo servono a dare comandi diretti al nostro robot.
La seconda tipologia di blocco che troviamo è quella con i bordi arrotondati, questi restituiscono sempre un valore numerico e devono essere inseriti all'interno di altri blocchi che presentono uno spazio con la medesima forma.
Il blocco Esegui per permette di muovere un motore di una quantità prestabilita dopodiché questo verrà arrestato. Il Blocco Avvia motore invece si limita ad avviare il movimento del motore e servirà un blocco Arresta Motore per fermarlo.
Questa coppia di blocchi è molto utile quando vogliamo eseguire altre operazioni mentre il motore è in movimento.
I blocchi Velocità e Potenza permettono di leggere i valori di queste grandezze per il motore selezionato.
Blocchi Movimento
I robot che utilizziamo in First Lego League hanno due motori dedicati ai movimenti che permettono di muovere le ruote in modo indipendente. I robot infatti a differenza delle automobili non hanno le ruote sterzanti e per girare devono movere le due ruote a velocità differente.
Si tratta dello stesso principio con cui girano i gatti delle nevi. Questo sistema permette di effettuare le manovre in modo molto più efficace rispetto al sistema della automobili rendendo i robot notevolmente più maneggevoli negli spazi stretti.
I blocchi Movimento controllano in modo automatico i due motori connessi alle ruote permettendoci di eseguire le manovre in modo semplice. Senza questi blocchi infatti dovremmo controllare noi i due motori singolarmente e calcolare la traiettoria del robot in base alla combinazione dei singoli movimenti.
Tra i blocchi di movimento troviamo Imposta motori di movimento che ci permette di segnalare al nostro programma in quali porte sono collegati i nostri motori.
Anche qui distinguiamo tra i comandi che permettono di eseguire un movimento per una distanza precisa e quelli che si limitano ad avviare il movimento, vale lo stesso discorso fatto per i blocchi motore.
Tra i blocchi di movimento troviamo quello che ci permette di selezionare la traiettoria dell'unità motrice, valori di sterrata positivi eseguono curve verso destra mentre valori negativi ci spostano verso sinistra. Con valori di sterzata superiori a 99 o inferiori a -99 il robot gira su se stesso.
Il blocco Imposta rotazione del motore serve a impostare la distanza percorsa dal robot quando questo esegue una rotazione. questa distanza infatti dipende dal raggio delle ruote che abbiamo montato.
Blocchi Evento
I blocchi Evento ci permettono di determinare quando vengono eseguite le parti di programma che scriviamo.
Tra questi utilizzeremo il blocco All'avvio del programma per eseguire una parte di codice non appena avremo lanciato il programma.
Il Blocco Quando il pulsante è premuto/rilasciato è molto utile per eseguire le parti di codice che devono essere svolte a comando o più volte. Di solito è proprio questo il blocco a cui agganceremo il programma che muove il robot sul campo di gara.
Blocchi Controllo
Questi blocchi di colore arancione hanno principalmente due funzioni, la prima e quella di ripetere più volte una parte del programma.
Il comando Ripeti ci permette di ripetere una parte di programma più volte, useremo questo blocco quando eseguiremo il nostro primo quadrato.
Quando invece dovremo ripetere una parte di codice un numero indeterminato di volte possiamo usare il blocco ripeti fino a quando che ci permette di impostare una condizione di uscita dal ripeti. Questo blocco presenta uno scavo a forma esagonale nel quale dobbiamo inserire un valore Booleano ovvero che può assumere solo i valori vero e falso.
I blocchi di tipo Se allora ci permettono invece di decidere se una parte di programma dovrà essere eseguita oppure no. Anche in questo caso a determinare la nostra scelta sarà un ingresso Booleano.
I comandi Arresta gli Stack ci permettono di interrompere l'esecuzione di alcune parti o dell'intero programma. Lo utilizzeremo per esempio quando dobbiamo fermare il robot in caso di emergenza.
Blocchi sensore
I blocchi Sensore sono blocchi che permettono di effettuare le letture dei nostri sensori e restituiscono sempre valori numerici o Booleani.
I sensori che utilizzeremo sono quello di luce riflessa e il giroscopio.
Il sensore di Luce Riflessa funziona soltanto quando posizionato vicino ad una superficie e nei robot che gareggiano in First Lego League li troviamo rivolti verso il basso in modo da poter rilevare i colori e il riflesso sul campo di gara.
In modalità Colore il sensore non è molto affidabile quindi viene utilizzato per rilevare la Luce Riflessa. Quando il sensore è posizionato su un colore chiaro la luce riflessa è molto alta, viceversa il valore rilevato è basso quando esso si trova sopra ad un colore scuro.
Il comando Luce Riflessa restituisce un valore numerico tra 0 e 100 che corrisponde direttamente alla lettura del sensore collegato alla porta indicata.
Tra i blocchi dedicati a questo sensore troviamo anche Riflesso minore/maggiore di che restituisce un valore Booleano on base alla condizione indicata.
Il Giroscopio è un sensore che misura le rotazioni del robot a partire da una configurazione di riferimento. Quando avviamo il robot infatti viene registrata una posizione iniziale e tutte le volte che l'orientamento cambia questo sensore va a misurare di quanti gradi ci siamo discostati. grazie a questo sensore possiamo creare dei programmi che permettono di effettuare curve perfette e movimenti accurati anche in caso di interazione con ostacoli o modelli di missione.
Possiamo immaginare che il giroscopio sai un po come la bussola interna del robot che gli permette di non perdere l'orientamento.
Tra i blocchi dedicati a questo sensore troviamo Angolo di imbardata/inclinazione/rotazione che restituisce il valore numerico in gradi misurato dal giroscopio (-179/180) e il comando Imposta angolo di imbardata su zero che ci permette di ripristinare la posizione zero del nostro giroscopio.
Operatori e Variabili
i blocchi Operatori ci consentono di eseguire operazioni Matematiche e Logiche. I primi restituiscono valori numerici e hanno forma arrotondata mentre i secondi hanno forma esagonale e restituiscono un valore Booleano.
Le Variabili sono degli spazi di memoria a cui noi assegniamo un nome. Ci sono dei valori numerici che sono caratteristici della costruzione del nostro robot. per esempio il valore di luce riflessa che il robot rileva quando è posizionato sul nero dipende dalla distanza del sensore dal terreno.
Nel programma potrebbe capitarci di dover riscrivere più volte questo valore all'interno dei nostri blocchi di controllo. Scrivere tante volte lo stesso parametro non ci obbliga ad utilizzare una variabile ma puo causare delle difficolta quando questo valore deve essere modificato.
Se per esempio spostiamo il nostro sensore più in basso dovremo cambiare questo valore in tutte le parti del programma e andare a cercare in tutto il codice dove lo abbiamo scritto.
Utilizzare una variabile rende questo processo molto più semplice, basterà infatti cambiare il valore della variabile e tutti i blocchi che la leggono vedranno il suo valore corretto in modo automatico.
Supponendo di aver creato una variabile ci compaiono i blocchi porta variabile e cambia variabile che permettono di modificare il valore di questa e il blocco che permette la sua lettura.
Blocchi personalizzati
Come ultima parte dovremmo parlare dei Blocchi personalizzati, si tratta di una sezione in cui troviamo i blocchi che abbiamo creato noi e che eseguono quindi le operazioni che noi abbiamo stabilito.
Ci occuperemo di questo tipo di Blocchi in una lezione dedicata che trovi nelle pagine successive della nostra guida.
Se vuoi approfondire ulteriormente il funzionamento dei singoli blocchi puoi aprire la guida dell'App sulla Home in alto a sinistra, clicca quindi su Guida in basso e selezioni Blocchi Parole.
In questo modo accedi ad una schermata che contiene la descrizione tecnica di tutti i blocchi disponibili.
Spero che questa guida introduttiva ti sia sta a utile.
Ora sei pronto per cominciare a muovere i tuoi primi passi nelle prossime lezioni.