Ambiente di Programmazione Visuale (VPL)

Ambiente di programmazione visuale Thymio

Il linguaggio di programmazione visuale (VPL - Visual programmi Language) consente di programmare Thymio in modalità visuale. E' disponibile in due modalità:

  • Il programma Thymio VPL ti dà un solo un ambiente di programmazione visuale.
  • Il VPL è anche disponibile come plug-in di Aseba Studio. Fai Click su Lancio VPL nel tab Strumenti per avviarlo.

I file di programma salvati in un ambiente possono essere riaperti nell'altro e viceversa.

Per gli utenti delle versioni precedenti

La versione, 1.4 e le seguenti, aggiungono nuove funzionalità. Se sei un utente utilizzatore della versione 1.3 o precedente, leggi la guida di transizione.

Panoramica dell'ambiente

Nell'ambiente VPL, un programma viene creato assemblando coppie di blocchi di "evento" e "azione". La schermata si presenta in questo modo:

vpl.png
  1. La barra degli strumenti contiene i bottoni per aprire e salvare file, caricare e arrestare l'esecuzione del codice e modificare la modalità dell'editor (base e avanzata).
  2. Questa area è utilizzata per scrivere del codice. Il codice scritto in quest'area istruisce il robot su come comportarsi.
  3. Questa linea indica se le istruzioni sono complete e scritte correttamente.
  4. I blocchi evento determinano quando il robot deve eseguire un'azione. Questi blocchi possono essere aggiunti al codice cliccando su essi e trascinandoli nel quadrato di sinistra di una coppia evento-azione che compare nell'area programma.
  5. I blocchi azione determinano determinano cosa il robot deve fare. Questi blocchi possono essere aggiunti al programma cliccando su essi e trascinandoli nel quadrato di destra di una coppia evento-azione che compare nell'area programma.
  6. Nella modalità VPL autonoma il testo di programma corrispondente viene scritto in quest'area. Quando VPL viene aperto da Aseba Studio il testo di programma viene scritto in Aseba Studio.

Si può scaricare un file compresso contenente le immagini di tutti i blocchi evento/azione cliccando qui.

Bottoni della barra strumenti

filenew.svgz Nuovo Questo bottone predispone l'editor per un nuovo programma.
fileopen.svgz Apri Questo bottone apre un file esistente.
save.svgz Salva Questo bottone salva il programma su disco.
save.svgz Salva come Questo bottone salva il programma chiedendo il nome del file all'utente.
play.svgz Carica ed esegui Questo bottone carica il programma sul robot e lo manda in esecuzione.
stop.svgz Stop Questo bottone arresta il robot. Una volta che il robot è stato arrestato, occorre premere nuovamente su carica ed esegui per riavviare il programma.
vpl-advanced_off.svgz Modo avanzato Questo bottone mette l'editor nella modalità avanzata. In questa modalità sono disponibili funzionalità avanzate dei blocchi evento/azione e nuovi blocchi.
info.svgz Aiuto Questo bottone carica questa pagina di aiuto
screenshot.svgz immagine schermata Questo bottone salva un'immagine della schermata corrente dei blocchi evento-azione in VPL.

Creare le coppie

Programmare in VPL consiste nell'associare un blocco evento con uno o più blocchi azione in una coppia. Puoi farlo trascinando i blocchi nelle coppie evento-azione nell'area di programma. Ad esempio una coppia composta di un evento bottone e un'azione motore dice al robot di muoversi quando un bottone viene toccato.

play.svg

Si possono assemblare più coppie di differenti istruzioni. Le coppie possono essere trascinate per modificare la sequenza. Cliccando sul bottone + si inserisce una nuova coppia mentre cliccando su X si rimuove la coppia. Una volta che il programma è stato creato, deve essere ricaricato nel robot cliccando il bottone carica ed esegui.

Per riassumere i passi per la programmazione visuale sono:

  1. Trascinare un blocco evento sulla parte sinistra di una coppia evento-azione.
  2. Trascinare uno o più blocchi azione nella parte destra della una coppia evento-azione.
  3. Ripetere i passi 1 e 2 fino a quando il programma è completo.
  4. Fare click sul bottone carica ed esegui e vedere se il robot si comporta come atteso.

Modo Base

Quando il VPL si avvia, è nella modalità base. In questa modalità solo alcuni blocchi vengono mostrati. In questo modo si dispone di un'interfaccia più semplice pensata per una programmazione elementare per chi si trova alle prime armi con Thymio.

Blocchi evento

event-buttons.svg bottoni Questo evento accade quando uno o più bottoni vengono toccati. Per ciascun bottone, grigio significa ignora il bottone, rosso indica che il bottone è stato toccato. Se tutti i bottoni sono ignorati, questo evento accade periodicamente 20 volte al secondo.
event-prox.svg sensori orizzontali di distanza Questo evento accade quando il robot rileva un oggetto in prossimità dei suoi sensori orizzontali. Per ogni sensore, grigio significa ignora il sensore, bianco indica che un oggetto deve essere nelle vicinanze e nero che un oggetto deve essere distante. Se tutti i sensori vengono ignorati, questo evento avviene periodicamente 10 volte per secondo.
event-ground.svg sensori di distanza dal terreno Questo evento accade quando il robot rileva o non rileva il terreno con uno dei suoi sensori inferiori. Poichè un terreno nero si comporta come assenza di terreno, questo evento viene anche utilizzato per rilevare il colore del terreno. Per ogni sensore, grigio significa ignora, bianco che il terreno deve essere vicino, nero che è in lontananza. Se tutti i sensori vengono ignorati, questo evento avviene periodicamente 10 volte per secondo.
event-tap.svg rilevamento tap Questo evento occorre quando il robot riconosce che è stato toccato.
event-clap.svg rilevamento clap Questo evento occorre quando il robot riconosce un rumore forte, ad esempio qualcuno che batte le mani nelle vicinanze.

Blocchi azione

action-motors.svg motori Questa azione permette di indicare la velocità del motore destro e sinistro (e quindi delle ruote).
action-colors-up.svg colore superiore Questa azione cambia il colore della parte superiore del robot, come miscela di rosso, verde e blu. (RGB).
action-colors-down.svg colore inferiore Questa azione cambia il colore della parte inferiore del robot come miscela di rosso, verde e blu. (RGB).
action-music.svg musica Questa azione esegue una melodia a 6 note definita dall'utente. Per ogni nota, più in alto è il punto, più alta sarà la tonalità. Una nota bianca raddoppia la durata. Per creare una nota, fare click sul rigo dove si vuole appaia. Cliccando sulla nota se ne cambia la durata (nera o bianca).

Modo avanzato

vpl-advanced_on.svgz

Cliccando il bottone Modo avanzato nella barra degli strumenti si abilitano i programmi VPL a definire ed usare uno stato interno.
Vengono anche aggiunti nuovi blocchi e versioni avanzate di alcuni blocchi specifici.

Lo stato interno

La risposta di un robot ad un evento può dipendere dallo stato del robot. Per esempio, assumendo che voi siate il robot, il pranzo è l'evento, mangiare è l'azione, ma cosa mangiare dipende dal vostro stato, la sensazione di caldo o freddo.
Quando sentite caldo preferireste mangiare un panino per pranzo. Quando sentite freddo invece potreste preferire una zuppa calda a pranzo. Quindi:

  • sono le 12:00 e il tempo è freddo → zuppa calda per pranzo
  • sono le 12:00 e il tempo è caldo → mangiare un panino per pranzo

In termini di coppie evento-azione, l'azione del robot dipende sia da un evento che da uno stato del robot. ad esempio:

  • Evento clap e robot in stato 0 → Accendi la luce blu
  • Evento clap e robot in stato 1 → Accendi la luce rossa
action-states.svg

Per cambiare lo stato il modo avanzato introduce l'azione stato (vedi a destra). Nel modo avanzato nei blocchi evento sulla destra compaiono 4 bottoni che corrispondono ai 4 bit della variabile di stato, che possono essere sia zero che 1 (inizialmente sono a 0). Lo stato corrente del robot è mostrato nella sua parte superiore sfruttando 4 led a croce del cerchio di led giallo. (il LED è spento per 0 e acceso per 1). L'azione di stato può configurare qualsiasi combinazione di questi 4 bits a 1 o 0. Per l'evento, i bottoni di stato agiscono come filtro: se il bottone è grigio il bit viene ignorato, se arancione il bit deve essere a 1, se bianco il bit deve essere a zero perché l'evento possa verificarsi.

L'esempio di programma seguente fa in modo che il robot diventi blu o rosso quando sente un battito di mani, a seconda dello stato in ci si trova. Lo stato viene fatto cambiare toccando i bottoni del robot:

vpl-state-example.svg

Blocchi addizionali

Nel modo avanzato vedrai tre nuovi blocchi. Due sono relativi al timer, un modo per scatenare un'azione dopo un certo tempo, e uno che consente di configurare lo stato interno.

event-timer.svg tempo scaduto Questo evento accade quando scade il tempo del timer
action-timer.svg timer Questa azione avvia un timer con un tempo pre-impostato da 0 a 4 secondi, prescelto dall'utente facendo click sul quadrante dell'orologio. Quando il tempo scade, viene generato l'evento timer.
action-states.svg stato Questa aziona configura lo stato interno a 4-bit del robot (vedi modo avanzato). Grigio significa mantieni il valore corrente, bianco significa valore a 0, giallo significa valore a 1.

Versione avanzata di blocchi esistenti

Ecco alcuni blocchi che possiedono una versione avanzata. Sono simili ai blocchi base, ma hanno alcune funzionalità aggiuntive.

event-rc-arrow.svg frecce telecomando Questo evento accade quando viene premuto un tasto freccia sul telecomando a infrarossi.
event-rc-keypad.svg tastiera telecomando Questo evento accade quando viene premuto uno dei dodici tasti sul telecomando a infrarossi.
event-prox-advanced.svg sensori orizzontali di distanza In aggiunta alle funzionalità della modalità base questo evento può riconoscere se un oggetto è vicino, ma non troppo, definendo una soglia entro la quale scattare (vedere esempio successivo).
event-prox-advanced-explained.svg sensori orizzontali di distanza (esempio) La barra superiore consente di predisporre la soglia sulla vicinanza mentre la barra inferiore consente di predisporre la soglia di lontananza dell'oggetto.
event-ground-advanced.svg sensori di distanza dal terreno Questo evento ha le stesse funzionalità aggiuntive dei sensori di prossimità orizzontali.
event-tilt.svg inclinazione destra o sinistra (tilt) Questo evento accade in funzione dell'inclinazione a destra o a sinistra del Thymio (tecnicamente chiamata "rollio"). Per difetto la corrispondente azione viene eseguita quando il Thymio è su una superificie piana. Puoi scegliere la condizione di inclinazione cliccando sul triangolo bianco e spostandolo a destra o a sinistra.
event-pitch.svg inclinazione avanti o indietro (pitch) Questo evento avviene in funzione dell'inclinazione in avanti o indietro del robot (tecnicamente chiamata "beccheggio" equivalente all'inglese "pitch") del Thymio. Funziona nella stessa maniere dell'evento di inclinazione destra o sinistra.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License