Uno strumento molto potente per creare sofistificati modelli parametrici è senza dubbio Grasshopper. Grasshopper è un editor visuale per lo scripting, completamente gratuito e progettato in modo da non richiedere conoscenze di programmazione. attraverso un intuitivo metodo grafico basato su interfaccia a nodi, l'utente definisce sequenze di istruzioni che vengono tradotte in modelli tridimensionali nella finestra di Rhino. [Arturo Tedeschi, Architettura Parametrica]
Quindi al contrario di Rhinoscript non richiede la conoscenza di linguaggi di rpogrammazione. Tuttavia manca della capacità di comunicare con hardware esterno come, ad esempio, Arduino. Anche qui non avere dimestichezza con i linguaggi può essere un ostacolo, ed è qui che entra in gioco Firefly. La caratteristica principale di questo plug-in di grasshopper è la possibilità di far dialogare quasi in tempo reale inpu e output dal mondo phisical al digital, attraverso un interfaccia visiva!
Per prima cosa dobbiamo avere installato sul nostro computer:
A questo punto scarichiamo dal sito la fersione più recente di Firefly e seguiamo le istruzioni per installarla ed la palette di firefly comparirà nel menu di grasshopper.
Per prima cosa, dobbiamo verificare che firefly comunichi con Arduino per la porta giusta:
Se tutto è andato bene dovreste ottenere un graficante messaggio HOORAAY
Perfetto adesso il passo successivo è quello di vedere gli input che riceve dai Pin analogici e Digitali.
Piccola, ma importante, digressione sui Pin di Arduino:
I segnali in ingresso o in uscita, possono essere analogici o digitali. Un segnale analogico può assumere qualsiasi valore (all'interno di un range noto). Con notevole semplificazione, si può pensare che siano "analogiche" tutte le grandezze fisiche misurabili nell'ambiente. Un segnale digitale può assumere due soli stati (High/Low, 1/0), corrispondenti a due livelli di tensione convenzionali (ad esempio, 5-0V). Con simile semplificazione, si può pensare che siano "digitali" tutte le informazione scambiate tra componenti logici (microprocessori, memorie, interfaccie di rete, display...). Possiamo quindi schematizzare in questo modo:
Dei pin digitali solo alcuni sono predisposti per segnali di tipo PWM (per maggiori dettagli rimando al post precedente) qui sotto sono quelli in verde. Infine ci sono 6 pin dedicati ai segnali analogici (in giallo), ma solo in input, ossia questi pin servono principalmente per acquisire dei segnali provenienti da sensori di tipo analogico: trimmer, potenziometri, fororesistenze, ultrasuoni, IR, ecc… ossia tutti quei sensori che possono generare un segnale analogico in funzione della loro stimolazione (luminosa, meccanica, ecc).
Sapere questo come vedremo è estremamente importante, come vedremo in seguito, per creare i nostri progetti.
Bene, andiamo avanti. Adesso quindi vogliamo che gli input analogici di Arduino vengano letti da firefly, come possiamo fare?
A questo punto vedremo apparire dei valori nei vari panel di output (ricordiamo che dagli analogici avrevo valori compresi tra 0 e 1023 e dai digitali 0[low] e 1[HIGH]) anche se non abbiamo sensori collegati ai pin analogici vedremo comunque dei valori, che cambiano in continuazione, niente paura si tratta semplicimente di disturbi statici (white noise) ininfluenti per noi. Se avete fatto tutto bene dovreste trovarvi con una situazione del genere:
Il prossimo passo sarà quello di far rispondere il nostro modello agli input analogici.