Simulatore di gravità con Raspberry Pi

In questo articolo imparerete quali sono gli effetti prodotti dalla gravità e come simularli in Scratch con un'applicazione per il Raspberry Pi. Potrete ottenere maggiori informazioni sulla forza di gravità, sugli effetti da essa prodotti, e su altro ancora, come ad esempio la missione dell'astronauta britannico dell'ESA Tim Peake a bordo della Stazione Spaziale Internazionale (ISS), visitando il sito web UK National STEM Centre.

Cosa imparerete

Creando un simulatore di gravità in Scratch, imparerete:

  • cos'è la forza di gravità e come viene calcolata su diversi pianeti del sistema solare;
  • come importare immagini in Scratch e utilizzarle come sfondo o come sprite;
  • come memorizzare dati nelle variabili;
  • come impostare e utilizzare la condizione if;
  • come usare gli operatori di moltiplicazione.

Cosa vi occorre

Dal punto di vista hardware non ci sono particolari requisiti: è sufficiente disporre della scheda Raspberry Pi con le periferiche di base. Per quanto riguarda il software, è sufficiente una distribuzione aggiornata di Raspbian su scheda SD. Per ottenere maggiori informazioni in merito, potete fare riferimento a questa guida su come aggiornare Raspbian.

Simuliamo gli effetti della gravità

Nello spazio, è come se tutto fluttuasse. Ciò avviene perchè gli oggetti riducono il loro peso al di fuori del nostro pianeta, la terra. Questa è probabilmente la principale differenza tra essere nello spazio e essere sulla terra, dove ogni cosa e ogni essere viene attratto verso la superficie. Sappiamo tutti che sulla terra esiste una forza che attrae ogni cosa verso il basso, ma siamo così abituati ad essa che non ci facciamo più caso. Questa forza di attrazione viene chiamata gravità.

La gravità esiste in ogni parte dell'universo: ogni parte di materia dell'universo attrae altre parti di materia. Maggiore è la quantità di materia, più forte risulta essere l'attrazione, ma questa decresce al crescere della distanza tra gli oggetti. Per questo motivo, i pianeti che hanno una massa inferiore a quella del sole, orbitano attorno ad esso, esattamente come la luna orbita attorno alla terra. Poichè noi camminiamo sulla superficie di un'enorme concentrazione di materia, la terra, questi concetti non risultano sempre così scontati.

Si dice che Sir Isaac Newton abbia percepito questa nozione di gravità mentre guardava una mela cadere da un albero.

La novità è che potete ricreare gli effetti prodotti dalla forza di gravità presente sulla terra tramite una simulazione Scratch!

Impostiamo un tema spaziale

  1. Aprite Scratch cliccando su Menu e Programming, seguito da Scratch. Alternativamente, potete usare la versione online Scratch 2.0, anche se alcuni blocchi potrebbe apparire diversamente.
  2. Create un nuovo file selezionando File e New.
  3. Cancellate la sprite Scratch del gatto cliccando con il tasto destro su di essa e selezionando Delete dal menu che appare.
  4. Per questo progetto dovrete creare un nuovo sfondo che rappresenti la terra. Per fare ciò, cliccate su Stage nella palette delle sprite e poi su Backgrounds vicino al tab Scripts.
  5. Cliccate su Paint per disegnare il vostro sfondo. Selezionate l'icona del rettangolo e il colore verde. E' importante che riempiate il rettangolo con un colore solido. Disegnate un rettangolo verde nella parte bassa dell'immagine che rappresenta la terra. Una volta soddisfatti della vostra creazione, cliccate su OK.
  6. Dovrete ora scegliere una sprite da utilizzare per il carattere. Potete usare la sprite del gatto di Scratch, oppure usare la nostra sprite Mooncake - the Astro Cat. Se il vostro Raspberry Pi è collegato a internet potete scaricare la sprite utilizzando il link indicato. Salvate l'immagine da qualche parte, in modo tale da poterla recuperare successivamente.
  7. Aggiungete poi una nuova sprite cliccando sull'icona centrale nella palette delle sprite, selezionate Astro-cat.png e cliccate su OK (Figura 1).
    Figura 1: Icona per caricare la figura [Fonte: www.raspberrypi.org]

    Figura 1: Icona per caricare la figura [Fonte: www.raspberrypi.org]

  8. Affinchè il vostro simulatore di gravità funzioni con questa sprite, dovrete impostare "Mooncake the Astro Cat" selezionando la sprite, cliccando poi su Costumes seguito da Edit. Nella finestra del Paint Editor vedrete un tasto con un simbolo più su di esso. Se cliccato, mostrerà un puntatore a croce sopra la sprite che potrete muovere con il mouse. Muovetelo in modo tale da selezionare la parte bassa di Mooncake e quando avete finito premete su OK (Figura 2).
    Figura 2: Pain editor [Fonte: www.raspberrypi.org]

    Figura 2: Paint editor [Fonte: www.raspberrypi.org]

  9. Cliccate sul tab scripts della sprite e salvate il vostro progetto Scratch cliccando su File e Save As. Chiamate il vostro programma Gravity simulation e salvatelo nella vostra home directory o in un qualunque altro punto dove sarete in grado di recuperarlo successivamente.

Creiamo le variabili per contenere i dati

  1. Per creare una variabile, cliccate su Variables e poi su Make a Variable. Si aprirà una finestra relativa alla nuova variabile, chiedendovi di inserire un nome per la stessa.
  2. Chiamiamo la prima variabile gravity e assicuriamoci che la voce For all sprites sia spuntata prima di cliccare su OK. Una variabile contiene un valore che può essere modificato, e può essere utilizzata ovunque nel programma.
  3. Vedrete che alcuni blocchi color arancio sono stati aggiunti all'area delle variabili chiamata gravity, e una piccola box di conteggio apparirà sullo stage.
  4. Dovrete creare un'altra variabile esattamente nello stesso modo, che chiamerete velocity.

Impostiamo la posizione iniziale

  1. Buona parte del setup del programma è ora completato. Possiamo quindi procedere con la creazione dello script, e ritorneremo perciò al tab Scripts.
  2. Aprite l'area Control e trascinate il blocco When green flag clicked nell'area principale dello script.
  3. Per accertarsi che Mooncake si posizioni in cima allo schermo quando il programma parte, occorre impostare opportunamente le sue coordinate. Usate un blocco go to x: 0 y: 0 dall'area dei blocci Motion. Trascinatelo e posizionatelo sotto When green flag clicked, poi inserite 0 per x e 148 per y.
  4. Ora dovrete utilizzare le variabili per memorizzare alcuni dati. Per fare ciò, utilizzate un blocco set gravity to 0 dall'area variaibili e sostituite il valore con -9,81, che è il valore della forza di gravità sulla terra.
  5. Analogamente, impostate la variiabile velocity a 0.

Il loop di simulazione

In questo programma vogliamo modificare la variabile velocità per simulare la forza di gravità. In fisica esistono numerose equazioni matematiche che vengono utilizzate per calcolare diverse forze, inclusa la gravità.

Per modificare la variabile velocità, possiamo utilizzare il calcolo:

Velocity = Gravity x Timestep
Velocity = -9.81   x 0.1

Il valore 0,1 è uno step di tempo del programma, e ad ogni iterazione del loop esso verrà moltiplicato per gravity (che vale -9,81) per produrre il valore della velocità.

  1. Affiancate un blocco forever (dalla sezione Control) al blocco set velocity e collocate un blocco variabile change velocity by 0 all'interno del loop forerver.
  2. Prendete poi un operatore di moltiplicazione (0 * 0) e posizionatelo all'interno dello spazio alla fine del blocco variabili.
  3. Trascinate la variabile gravità alla destra dell'operatore di moltiplicazione, e poi inserite 0,1 nell'altro.
  4. L'ultimo blocco richiesto è un blocco motion per muovere lo sprite Mooncake. Usate il blocco motion change y by e aggiungetelo al loop, trascinate poi la variaible velocity e aggiungetela allo spazio bianco nel blocco motion. Lo script dovrebbe apparire come la figura 3.
    Figura 3: Simulazione [Fonte: www.raspberrypi.org]

    Figura 3: Simulazione [Fonte: www.raspberrypi.org]

  5. Salvate il programma e cliccate sulla bandierina verde per verificare che funzioni.

Atterrando sul terreno

Il programma fino ad ora scritto simula la gravità lasciando cadere Mooncake dalla cima dello schermo verso il basso, ma non sta ancora atterrando sulla terra. Possiamo modificare lo script aggiungendo un'istruzione conditional all'interno del loop di simulazione.

  1. Selezionate l'area dei blocchi di controllo e trascinate un blocco if nell'area dello script. Posizionatelo all'interno del loop forever, includendo i blocchi set velocity e change y by.
  2. Impostate poi la condizione del blocco if utilizzando un blocco operatore not, che andrebbe posizionato dopo la parola if. Prendete poi il blocco sensing touching colour? e posizionatelo nello spazio del blocco operatore not.
  3. Il colore visualizzato nel blocco touching colour deve corrispondere al colore di sfondo (verde) della terra. Per renderli esattamente uguali, cliccate sulla box colorata all'interno del blocco touching colour e il puntatore del mouse si trasformerà in una piccola icona a forma di goccia. Spostate il mouse sulla terra nella finestra di preview di Scratch e cliccate sul colore verde. Il blocco visualizzerà a questo punto lo stesso colore (Figura 4).
    Fonte: www.raspberrypi.org

    Figura 4: Script di simulazione [Fonte: www.raspberrypi.org]

  4. Salvate il programma e cliccate sulla bandierina verde per verificare se Mooncake riuscirà ad atterrare sulla terra.

Ciò che va su deve andare giù

Nella simulazione di gravità, Mooncake ora cade ed atterra, ma non può ancora comportarsi come un gatto e saltare! Aggiungiamo un altro script per simulare anche questo comportamento!

  1. Aggiungiamo un blocco di controllo when space key pressed nell'area script per la sprite. Colleghiamo poi un blocco di controllo condizionale if al di sotto di esso.
  2. Trascinate un blocco touching colour? nel blocco if, ricordandovi di impostare il colore in modo tale che sia lo stesso dello sfondo.
  3. Aggiungete poi un blocco set y to 0 nel blocco condizionale if e modificate il valore della variabile in -60.
  4. Per completare lo script, aggiungete un blocco variabile set velocity to 0 e modificate il valore della variabile in 10 (Figura 5).
    Fonte: www.raspberrypi.org

    Figura 5: Script di simulazione [Fonte: www.raspberrypi.org]

  5. Salvate il programma e cliccate sulla bandierina verde per eseguirlo. Una volta che Mooncake è caduta dal cielo e atterrata, premete space per farla saltare.

Simuliamo la gravità su altri pianeti

Sappiamo che il valore -9,81 è il valore della forza di gravità sul nostro pianeta. La forza di gravità che attrae ogni oggetto verso la terra può essere calcolata come il prodotto della massa (dimensione e peso) per l'accelerazione di gravità. Poichè più o meno sappiamo che dimensioni hanno gli altri pianeti del sistema solare, possiamo applicare anche ad essi lo stesso calcolo. Per esempio, la forza di gravità sul pianeta Marte è 3,71, mentre su un pianeta molto più grande come Giove è 24,8!

Per dimostrare gli effetti di differenti forze di gravità su altri pianeti, potete semplicemente aggiungere degli script per impostare opportunamente la variabile gravità.

  1. Posizionate un blocco di controllo When space key pressed nell'area script dello sprite. Cliccate sulla lista di selezione e sostituite space con 1.
  2. Aggiungete un blocco set Gravity to 0 al di sotto del precedente, e sostituite il valore 0 con il valore -3,71.
  3. Collegate poi un blocco say hello for 2 seconds, sostituite il testo con On Mars! e il valore 2 con 4. Questo vi permetterà di ricordare su quale pianeta si trova Mooncake.
  4. Ripetete i passi precedenti per ciascuno dei seguenti pianeti, ricordandovi di impostare un nuovo numero per selezionare uno tra i pianeti nel blocco di controllo when 0 clicked (Figura 6):
    • Giove = -24,8
    • Luna = -1,62
    • Plutone = -0,65
    • Terra = -9,81
Fonte: www.raspberrypi.org

Figura 6: Script di simulazione [Fonte: www.raspberrypi.org]

Link

Link all'articolo originale: https://www.raspberrypi.org/learning/gravity-simulator/

 

 

Una risposta

  1. Maurizio Di Paolo Emilio Maurizio 19 giugno 2016

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *