firefly primer 1.003
TRANSCRIPT
-
8/7/2019 Firefly Primer 1.003
1/37
PRIM
ER
FIREFLY
CONNECTINGARDUINO+GRASSHOPPER
BYJASONKJOH
NSONANDANDR
EWP
AYNE
FireyVersion1.003
-
8/7/2019 Firefly Primer 1.003
2/37
Firey Primer - Firey Version 1.003 - Page 2
Firey Primer - Firey Version 1.003
By Jason K Johnson and Andrew Payne
Copyright 2010 All Rights Reserved
For use with Grasshopper (build 0.7 or higher)
Last Modied: August 29, 2010 2:49 PM
Check for updates to this Primer at:
www.reyexperiments.com
-
8/7/2019 Firefly Primer 1.003
3/37
-
8/7/2019 Firefly Primer 1.003
4/37
Firey Primer - Firey Version 1.003 - Page 4
Ideas
The apparent veil between the organic and the manufactured has crumpled What shouldwe call that common soul between the organic communies we know of as organisms and
ecologies, and their manufactured counterparts of robots, corporaons, economies, and
computer circuits? I call those examples, both made and born, vivisystems for the lifelikeness
each kind of system holds.-Kevin Kelly, Out of Control
If architects designed a building like a body, it would have a system of bones and muscles and
tendons and a brain that knows how to respond. If a building could change its posture, ghten
its muscles and brace itself against the wind, its structural mass could literally be cut in half.
-Guy Nordenson, Princeton University / Nordenson and Associates
We foresee the possibility that most (if not all) architectural space will become responsive
and be animated through intelligent kinec capacies. Each space will have a series of sensorswhich allow the occupaonal paerns within the space to be registered and fed back into
the intelligent responsive structures. This can operate on many scales and levels. I think what
emerges is a new era within architecture, or between architecture and some other disciplines
-Patrick Schumacher (from an interview conducted by Alessandra Belia on 10 Feb 2004)
First we build the tools, and then they build us.
-Marshall McLuhan
Images: Kuka fabricaon robot, Aegis Wall, MIT Senseable Cies Lab,
Makerbot personal fabricator, Usman Haque, Future Cies Lab
-
8/7/2019 Firefly Primer 1.003
5/37
Firey Primer - Firey Version 1.003 - Page 5
Table of Contents
Secon Contents Page
INTRODUCTION 03Table of Contents 05
1.0 GETTING STARTED > INSTALLATION 06
Rhino, Grasshopper, Firey (.gha) Install 06Arduino, Blink, Firey Firmata (.pde) Upload 07
2.0 FIREFLY TOOLBAR + COMPONENTS 082.1 Open Port 09
2.2 Duemilanove Read 102.3 Duemilanove Write 112.4 Mega Read 132.5 Mega Write 132.6 Generic Serial Read 142.7 Generic Serial Write 152.8 Pachube Read 162.9 Wii Nunchuck 172.10 Binary Blink 182.11 Buer 192.12 Constrain Values 202.13 Data Log 212.14 Fader One-Way 222.15 Fader Two-Way 222.16 Playback 232.17 Smoothing 242.18 Addional Components (Boolean, Slider, Tracker, Remap, Panel, ) 25
3.0 FIREFLY TUTORIALS 283.1 Tutorial 01: Basic Reading and Wring 28
3.2 Tutorial 02: Pachube 313.X Tutorial 03: GH / Light Sensors + LED Field3.X Tutorial 04: GH Structural Analysis using Flex Sensors3.X Tutorial 05: Wind Analysis3.X Tutorial 06: Wii, Reactavision and other peripherals
4.0 BASIC ELECTRONICS4.X Arduino Hardware Overview4.X Arduino Programming Overview; Hacking the Firey Firmata (.pde)4.X Sensors - Analog and Digital4.X Actuators - Servos, Motors, LEDS4.X Techniques - Prototyping, Soldering, etc.4.X Fritzing for Arduino Visualizaon
5.0 ADDITIONAL RESOURCES 345.1 Hardware Suppliers and Related Soware 345.2 Recommended Web Resources 355.3 Recommended Books and Readings 36
6.0 FIREFLY COMMUNITY - Share, Comment, Help 37
Comingsoon!
-
8/7/2019 Firefly Primer 1.003
6/37
Firey Primer - Firey Version 1.003 - Page 6
1.0 GETTING STARTED > INSTALLATION
First Steps > Dowload and Install Soware
You will need to install the following soware packages/plug-ins to use Firey. For Steps 04-05 you will need an
Arduino board and USB cable. For the the purposes of these introductory tutorials we are assuming that you
will be using the Arduino Duemilanove board. Support for other boards will be published in the next version ofthe Firey Primer.
///////////////////////////////////////////////////////
Step 01. Rhino Version 4 - Service Release 8Download the latest version of Rhino: hp://www.rhino3d.com/download.htm
You must have Service Release 8: hp://download.rhino3d.com/en/Rhino/4.0/sr/download/
///////////////////////////////////////////////////////
Step 02. Grasshopper (Build 0.7 or higher)Download the latest build: hp://download.rhino3d.com/en/Grasshopper/1.0/wip/rc/download/
///////////////////////////////////////////////////////
Step 03. Firey (Build 1.002)Download the latest build, Firey Primer, and resources: hp://www.reyexperiments.com
Copy/Paste the le named Firey_1.003.gha into the following folder:
C:\Program Files\Rhinoceros 4.0\Plug-ins\Grasshopper\Components
Conrm the installaon: Launch Rhino 4.0 SR8; Type grasshopper in the Command prompt; Once
Grasshopper has launched in a new window - conrm that the Firey tab has been added (see image below).
Congratulaons you have installed the Firey plug-in!!!
Firey Tab
http://arduino.cc/en/Main/ArduinoBoardDuemilanovehttp://www.rhino3d.com/download.htmhttp://www.rhino3d.com/download.htmhttp://www.grasshopper3d.com/profile/fireflyhttp://www.grasshopper3d.com/profile/fireflyhttp://www.rhino3d.com/download.htmhttp://www.rhino3d.com/download.htmhttp://arduino.cc/en/Main/ArduinoBoardDuemilanove -
8/7/2019 Firefly Primer 1.003
7/37
Firey Primer - Firey Version 1.003 - Page 7
Step 04. Arduino 0018 Soware + Install the Drivers + Blink your Arduino BoardDownload the latest version: hp://www.arduino.cc/en/Main/Soware
* If you are using a Mac OSX we recommend that you install Arduino 0018 on the Windows side.
Follow these instrucons closely and complete steps #1-6: hp://arduino.cc/en/Guide/Windows
A few seconds aer the upload nishes, you should see the pin 13 (L) LED on the board start to blink (in
orange). If it does, congratulaons! Your Arduino is up-and-running!
Note: If you are having Arduino installaon problems visit: hp://arduino.cc/en/Guide/Troubleshoong
///////////////////////////////////////////////////////
Step 05a. Firey Firmata (Build 1.003)Download the latest Firey Firmata: hp://www.reyexperiments.com
Copy/Paste the folder named Firey_DUEM_Firmata_1003.pde into your Arduino Sketchbook folder:
My Documents\Arduino or Username\Documents\Arduino
Note: The rst me you run the Arduino soware, it will automacally create a directory for your Sketchbook.
You can view or change the locaon of the sketchbook locaon with the File > Preferences dialog. The sketchesin your sketchbook can be opened from the File > Sketchbookmenu or from the Open buon on the toolbar.
Step 05b. Upload Firey Firmata to your Arduino Boarda. Launch the Arduino 0018 Applicaon
b. Open the Firey Firmata sketch: File > Sketchbook > Firey_DUEM_Firmata_1003.pde
c. Select your Board: Tools > Board > Arduino Duemilanove (w/ ATmega 328)
d. Select your Serial Port: Tools > Serial Port > COM# (choose one that is available; remember the Port #)
e. Upload the Program: Simply click the Upload buon. Wait a few seconds - you should see the RX and TX
leds on the board ashing. If the upload is successful, the message Done uploading. will appear in the status
bar. You will keep the USB connected to the Arduino - this is how Firey will communicate with the sensors,
motors and LEDS connected to the board.
Congratulaons - your Arduino board is now ready to communicate with Grasshopper / Firey!!!
Blink Me !!!USB
Upload Buon
http://www.arduino.cc/en/Main/Softwarehttp://arduino.cc/en/Guide/Windowshttp://arduino.cc/en/Guide/Troubleshootinghttp://www.grasshopper3d.com/profile/fireflyhttp://www.grasshopper3d.com/profile/fireflyhttp://arduino.cc/en/Guide/Troubleshootinghttp://arduino.cc/en/Guide/Windowshttp://www.arduino.cc/en/Main/Software -
8/7/2019 Firefly Primer 1.003
8/37
Firey Primer - Firey Version 1.003 - Page 8
2.0 FIREFLY TOOLBAR + COMPONENTS
BOARDSDuemilanove Read - read values on all digital and analog Arduino DUEM pins
Duemilanove Write- write values on all digital and analog Arduino DUEM pins
Mega Read - read values on all digital and analog Arduino MEGA pinsMega Write - write values on all digital and analog Arduino MEGA pinsSerialRead - Retrieve a value coming over the serial sortSerialWrite - Write a string value to the Serial PortOpen Port - open the serial port, set the port number and the baud rate
OTHER INPUTS
Pachube Read - Read a le from a Pachube Internet feed (www.pachube.com)Wii Nunchuck - read all sensor values from a Wii Nunchuck
UTILITYBinary Blink - oscillates 0s and 1s based on an incoming paern of integers
Buer - Store the last number of values based on the buer domain
Constrain Values - constrains a number to specic numeric rangeData Log- create a log for incoming dataFader One-Way - fade between one value to another based on a me intervalFader Two-Way - fade between a min and max value based on fade in /outPlayback - the playback component will retrieve values from a text le (.txt, .csv, and .dat)Smoothing - Smooth (or average) an incoming value
Firey Toolbar
-
8/7/2019 Firefly Primer 1.003
9/37
Arduino: Tools > Serial Port > COM #
Locang your Serial Port COM# within the Arduino PDE
Firey Primer - Firey Version 1.003 - Page 9
2.1 Open Port
Firey > Boards > Open Port
The Open Port component allows you to establish the connecon between the Arduino and Grasshopper. First,
conrm the communicaon Baud Rate (Since 9600 works for just about everything - beginners can skip this
step!). Second, Set the Port Number [A] and then Open or Close the Serial Port Connecon using a True/False
Toggle [B] [False = Port Closed; True = Port Open]. The Firey Duemilanove Read/Write and Mega Read/Write
components will only send/receive data if the port is open.Note: Always close the serial port before closing your Grasshopper sketch. If you do not close your port then the
next me you open the le you will encounter a pop-up screen with a whole series of nasty errors messages!
* You can use mulple Open Port components to connect mulple Arduino boards to Firey.
Descripon of Component Input/Output Parameters
Input parameters:
Open (Boolean) Boolean (True/False) value to Open or Close the Serial Port
Port (Integer) The Port Number has to be the same Serial Port assigned in the Arduino Sketch. You can nd
which COM port [C] you are using by clicking on the Tools>Serial Port buon on the Arduino IDE (see below).Baud (Integer) The BaudRate value should match the speed set in the Arduino sketch. Standard values: 4800,
9600, 14400, 19200, 28800, 38400, 57600.
Output parameters:
Msg (String) Current status of Serial Port
Step 01. Set the
Port number
Step 02. Toggle
Open to True
A
B
C
-
8/7/2019 Firefly Primer 1.003
10/37
Firey Primer - Firey Version 1.003 - Page 10
2.2 Duemilanove Read
Firey > Boards > Duemilanove Read
The FireFly Duemilanove Read component will read values for all corresponding digital and analog pins on the
Arduino Duemilanove, Diecimilla, or Lillypad board. Note: This component is meant to be used in tandem with
the FireFly Duemilanove Arduino program (a .pde le) which can be downloaded from the Firey website at:
www.reyexperiments.com
[A] Port: This should match the Port number that you rst established in the Open Port component
Descripon of Component Input/Output Parameters
Input Parameters:
Start (Boolean) Input an Boolean value (True/False) to start receiving values from the Arduino
Port (Integer) The Port Number has to be the same Serial Port assigned in the Arduino Sketch.
Timer (Boolean) Set a Boolean Toggle to turn the mer on (True) or o (False)
Rate (Integer) Time interval (ms) to wait aer the soluon has been expired. The default is for the mer to up-
date at its fastest possible rate. It you only want to read your sensors every 2 seconds you would enter 2000
here, or every half second would be 500, etc.
Output Parameters:
APin0 (Integer) Incoming sensor value from Analog In Pin 0
APin1 (Integer) Incoming sensor value from Analog In Pin 1
APin2 (Integer) Incoming sensor value from Analog In Pin 2
APin3 (Integer) Incoming sensor value from Analog In Pin 3
APin4 (Integer) Incoming sensor value from Analog In Pin 4
APin5 (Integer) Incoming sensor value from Analog In Pin 5
DPin2 (Integer) Incoming sensor value from Digital In Pin 2
DPin4 (Integer) Incoming sensor value from Digital In Pin 4
DPin7 (Integer) Incoming sensor value from Digital In Pin 7
Msg (String) Current status of Serial Port
A
-
8/7/2019 Firefly Primer 1.003
11/37
Firey Primer - Firey Version 1.003 - Page 11
2.3 Duemilanove Write
Firey > Boards > Duemilanove Write
The FireFly Duemilanove Write component will write values for all corresponding digital pins on an Arduino
Duemilanove, Diecimilla, or Lillypad board. Note: This component is meant to be used in tandem with the Fire-
Fly Duemilanove Arduino Sketch (a .pde le) which can be downloaded from the Firey website at:
www.reyexperiments.com
Note: The current Firey Firmata build assigns Digital (PWM) Pins 9, 10, and 11 for use with Servo engines,
and Digital Pins 3, 5, 6 are dedicated to Digital (PWM) for LEDS etc. All other Digital Pins can be used for Digital
Write (HIGH/LOW).
[A] Port: This should match the Port number that you rst established in the Open Port component
Descripon of Component Input/Output Parameters
Input parameters:
Start (Boolean) Input an Boolean value (True/False) to start wring values to the Arduino
DPin13 (Integer) Integer to write to Digital Pin13. The integer (0) will send a LOW value and a (1) will send a
HIGH value.
DPin12 (Integer) Integer to write to Digital Pin12. The integer (0) will send a LOW value and a (1) will send a
HIGH value.
DPin11* (Integer) Integer to write to Digital Pin 11. If the PWM buon is not checked, then the integer (0) will
send a LOW value and a (1) will send a HIGH value. If the PWM buon is checked, then any PWM value be-tween 0-255 can be sent to the specied pin.
DPin10* (Integer) Integer to write to Digital Pin 10. If the PWM buon is not checked, then the integer (0) will
send a LOW value and a (1) will send a HIGH value. If the PWM buon is checked, then any PWM value be-
tween 0-255 can be sent to the specied pin.
DPin9* (Integer) Integer to write to Digital Pin 9. If the PWM buon is not checked, then the integer (0) will
send a LOW value and a (1) will send a HIGH value. If the PWM buon is checked, then any PWM value be-
tween 0-255 can be sent to the specied pin.
DPin8 (Integer) Integer to write to Digital Pin12. The integer (0) will send a LOW value and a (1) will send a
HIGH value.
A
-
8/7/2019 Firefly Primer 1.003
12/37
Firey Primer - Firey Version 1.003 - Page 12
DPin6* (Integer) Integer to write to Digital Pin 6. If the PWM buon is not checked, then the integer (0) will
send a LOW value and a (1) will send a HIGH value. If the PWM buon is checked, then any PWM value be-
tween 0-255 can be sent to the specied pin.
DPin5* (Integer) Integer to write to Digital Pin 5. If the PWM buon is not checked, then the integer (0) will
send a LOW value and a (1) will send a HIGH value. If the PWM buon is checked, then any PWM value be-
tween 0-255 can be sent to the specied pin.
DPin3* (Integer) Integer to write to Digital Pin 3. If the PWM buon is not checked, then the integer (0) will
send a LOW value and a (1) will send a HIGH value. If the PWM buon is checked, then any PWM value be-tween 0-255 can be sent to the specied pin.
Output parameters:
Out (String) Returns the string that will be sent to the Arduino board. The Arduino sketch that accompanies
this component will split this string up and send the values to the appropriate pins.
Msg (String) Current status of Serial Port
Arduino Diecimila / Duemilanove Overview
The Arduino Duemilanove (2009) is a microcontroller board based on the ATmega168 or ATmega328. It has
14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz crystal oscil-
lator, a USB connecon, a power jack, an ICSP header, and a reset buon. It contains everything needed to sup-
port the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter
or baery to get started.
Duemilanove means 2009 in Italian and is named aer the year of its release. The Duemilanove is the latest
in a series of USB Arduino boards; for a comparison with previous versions, see the index of Arduino boards.
For more info:hp://arduino.cc/en/Main/ArduinoBoardDuemilanove
-
8/7/2019 Firefly Primer 1.003
13/37
Firey Primer - Firey Version 1.003 - Page 13
2.4 / 2.5 Mega Read / Write
Firey > Boards > Mega Read / Write
The FireFly Mega Read and Write component will read and write values to all corresponding digital and analog
pins on an Arduino Mega board. Note: This component is meant to be used in tandem with the FireFly Mega
Arduino Sketch which can be downloaded from the Firey website at: www.reyexperiments.com
This component is recommended for advanced users only. The Arduino Mega has 54 digital input/output pins
(of which 14 can be used as PWM outputs), 16 analog inputs and more. Detailed specs can be found here:
hp://arduino.cc/en/Main/ArduinoBoardMega
Digital Pins 2,3,4,5,6,7 can fade LEDS (PWM opon must be selected)
Digital PWM Pins 8,9,10,11,12,13 are capable of controlling Servos (PWM opon must be selected)
Digital Pins 22,23,24,25,26,27,28,29,30,31,32,33 can control digital LEDS (on/o)
Arduino Mega microcontroller
-
8/7/2019 Firefly Primer 1.003
14/37
-
8/7/2019 Firefly Primer 1.003
15/37
Firey Primer - Firey Version 1.003 - Page 15
2.7 Generic Serial Write
Firey > Boards > Generic Serial Write
Write a string value to the Serial Port.
Descripon of Component Input/Output Parameters
Input parameters:
Start (Boolean) Input an Boolean value (True/False) to start wring values to the Arduino. Note: You must rst
open the serial connecon by using the Open Port component (Firey/Boards/Open Port) before seng the
Start input value to True.
Data (String) String to write to the Serial Port
Port (Integer) The Port Number has to be the same Serial Port assigned in the Arduino Sketch. You can nd
which COM port you are using by clicking on the Tools>Serial Port buon on the Arduino IDE.
Output parameters:
Out (String) Returns the string that will be sent to the Arduino board.
Msg (String) Current status of Serial Port
-
8/7/2019 Firefly Primer 1.003
16/37
Firey Primer - Firey Version 1.003 - Page 16
2.8 Pachube Read
Firey > Other Inputs > Pachube Read
Read a le from a Pachube feed. Pachube (hp://www.pachube.com ) allows you to store, share and discover
real-me sensor, energy and environment data from objects, devices and buildings around the world. Pachube
is a convenient, secure and scalable plaorm that helps you connect to and build the internet of things.
(Quoted from Pachube.com). *See the Pachube Read Tutorial in secon 3.2 of this Primer
Descripon of Component Input/Output Parameters
Input parameters
Feed (String): Pachube web address of feed.
API Key (String): Users API Key
Output parameters
csv (String) Returns the CSV output from a given csv pachube feed.
Msg (String) Returns the tle and mestamp for the retreival of the pachube feed
ID (String) Returns the XML ID of each element in a pachube feed
Tag (String) Returns the XML Tag of each element in a pachube feed
Min (String) Returns the minimum value of each element in an XML pachube feed
Max (String) Returns the maximum value of each element in an XML pachube feed
Val (String) Returns the current value of each element in an XML pachube feed
Unit (String) Returns the units of each element in an XML pachube feed
-
8/7/2019 Firefly Primer 1.003
17/37
Firey Primer - Firey Version 1.003 - Page 17
2.9 Wii Nunchuck
Firey > Other Inputs > Wii Nunchuck
This component will allow you to read all of the sensor values from the Wii Nunchuck. Note: This component is
meant to be used in tandem with the Wii Nunchuck Arduino Sketch which can be downloaded from the Firey
website at: www.reyexperiments.com
Descripon of Component Input/Output Parameters
Input parameters:
Start (Boolean) Input an Boolean value (True/False) to start receiving values from the Arduino. Note: You must
rst open the serial connecon by using the Open Port component (Firey/Boards/Open Port) before seng
the Start input value to True.
Port (Integer) The Port Number has to be the same Serial Port assigned in the Arduino Sketch. You can nd
which COM port you are using by clicking on the Tools>Serial Port buon on the Arduino IDE.
Output parameters:
AccX (Integer): Returns the accelerometer X value
AccY (Integer): Returns the accelerometer Y value
AccZ (Integer): Returns the accelerometer Z valueJoyX (Integer): Returns the joysck value of the X-axis
JoyY (Integer): Returns the joysck value of the Y-axis
Zbut (Integer): Returns the status of the Z buon
Cbut (Integer): Returns the status of the C buon
Msg (String): Current status of Serial Port
WiiChuck Arduino Adapter Kit
hp://www.sparkfun.com/commerce/product_info.php?products_id=928
hp://todbot.com/blog/2008/02/18/wiichuck-wii-nunchuck-adapter-available
-
8/7/2019 Firefly Primer 1.003
18/37
Firey Primer - Firey Version 1.003 - Page 18
2.10 Binary Blink
Firey > Ulity > Binary Blink
Oscillates 0s and 1s based on an incoming paern of integers
Descripon of Component Input/Output Parameters
Input parameters:
P (Integer): The blink paern is a list of integers that will determine the me interval (ms) between the
oscillang output of zeros or ones. For instance, a blink paern of 100,200,300,400 will rst output a zero for
100ms, then a one for 200ms, then back to a zero for 300ms, and nally another one for 400ms. If the repeat
toggle has been set to true, this blinking paern will connue. The smallest me interval that is currently
accepted in the blink paer is 25ms.
S (Boolean): Start/Stop Boolean toggle
R (Boolean): Repeat Paern
Output parameters:
B (Integer): Binary Output of 0s and 1s
Binary Blink is one of the simplest ways to conrm that Firey
and the Arduino board are communicang correctly. In the
image (right) the long leg (+) of an LED is inserted into Pin13
and the short leg (-) is inserted into GND.
-
8/7/2019 Firefly Primer 1.003
19/37
Firey Primer - Firey Version 1.003 - Page 19
2.11 Buer
Firey > Ulity > Buer
Store the last number of values based on the buer domain
Descripon of Component Input/Output Parameters
Input parameters:
V (Number) Incoming value
D (Domain) Target Domain to store data in the buer.
Output parameters:
V (Number) The list of buered values
Mn (Number) The minimum value in the buer
Mx (Number) The maximum value in the buer
-
8/7/2019 Firefly Primer 1.003
20/37
Firey Primer - Firey Version 1.003 - Page 20
2.12 Constrain
Firey > Ulity > Constrain
Constrains a number to a specic numeric range.
Descripon of Component Input/Output Parameters
Input parameters:
Val (Number) Incoming value
Min (Domain) Domain to constrain values
Output parameters:Val (Number): Constrained Value
-
8/7/2019 Firefly Primer 1.003
21/37
Firey Primer - Firey Version 1.003 - Page 21
2.13 Data Log
Firey > Ulity > Data Log
Create a log of incoming data.
Descripon of Component Input/Output Parameters
Input parameters:
V (String) The incoming data to track
R (Boolean) Reset the log of values
T (Boolean) Start recording values into the data log
W (Boolean) Wrap index to list bounds. If the Wrap value is set to true and the incoming log value exceeds the
length limit, then it will begin re-recording over the previous values from index number zero.
L (Integer) Set the number of values you wish to store in the data log. If an length of zero is set, then the datalog will record values indenitely (or unl you stop the recording).
P (String) Oponal le path in your directory to stream the data log
Output parameters:
O (String) The output log of data
-
8/7/2019 Firefly Primer 1.003
22/37
Firey Primer - Firey Version 1.003 - Page 22
2.14 / 2.15 Fade One / Two Way
Firey > Ulity > Fade One Way
Fade between one value to another based on a me interval (ms). These are great components to fade LEDS or
pulsing motors using med intervals.
Firey: Ulity > Fade Two Way
Fade between a minimum and maximum value based on the fade in and fade out me interval (ms).
Descripon of Component Input/Output Parameters
Input parameters:V1 (Integer) The minimum value for the fade
V2 (Integer) The maximum value for the fade
T or T1 (Integer) The me interval (ms) to fade from the minimum value to the maximum value. The smallest
me interval that will be accepted is 100ms.
T2 (Integer) The me interval (ms) to fade from the maximum value to the minimum value. The smallest me
interval that will be accepted is 100ms.
D or D1 (Integer) A me delay (ms) to wait before aer the value has reached the maximum value but before it
starts the fade back to the minimum value.
D2 (Integer) A me delay (ms) to wait before aer the value has reached the minimum value but before it
starts the fade back to the maximum value.
S (Boolean) Start/Stop Boolean toggle
Output parameters:
O (Integer) Fading Output
-
8/7/2019 Firefly Primer 1.003
23/37
Firey Primer - Firey Version 1.003 - Page 23
2.16 Playback
Firey > Ulies > Playback
The Playback component will retrieve values from a text le (acceptable le types: .txt, .csv, and .dat) and will
begin returning individual values at a given frame rate(s). You can input mulple framerates to simultaneously
keep track of mulple outputs at dierent intervals
Descripon of Component Input/Output Parameters
Input parameters:
P (String) File path(s) to monitor. The playback will remove any mestamp values from the original le.
Acceptable le types include .txt, .csv, and .dat
S (Boolean) Start/Stop Boolean toggle
F (Integer) Frame rate (ms) to the return each value from the le. Currently the smallest frame rate allowed is
25ms.
R (Boolean) Repeat Playback paern
Output parameters:
O (String) The playback output values
-
8/7/2019 Firefly Primer 1.003
24/37
Firey Primer - Firey Version 1.003 - Page 24
2.17 Smoothing
Ulity > Smoothing
Smooth (or average) an incoming value based on a sampling level. In the illustraon above, the rawAPin0
sensor value is 673.APin0 is connected to the Vparameter. A text Panel holding the number 10 (generally
anything between 10-20 works well) is connected to the N parameter. On the right side of the Smooth
component you can see a text Panel holding the smoothed value of 673.0.
A comparison of the two Value Tracker graphs (above right) best illustrates how eecve the smooth
component can be when reading analog sensors like Photoresistors, IR proximity sensors, Accelerometers, etc.
The graph above (B) is jagged and jiery, while the lower graph (A) is relavely smooth and owing.
Descripon of Component Input/Output Parameters
Input parameters
Val (Number): Incoming value
N (Integer): The number of samples to average
Output parameters
A (Number): A smoothed average of values.
A
B
-
8/7/2019 Firefly Primer 1.003
25/37
Firey Primer - Firey Version 1.003 - Page 25
2.18 Addional Components
Addional Components [Timer, Value Tracker, Remap Numbers and more]
These addional components are not Firey specic components but you will use them quite oen. They
come pre-packaged as a part of the standard Grasshopper build. You will ulize many of these components
when you use Firey so it is crical that you know where to nd them and how to incorporate them into yourprojects. This is a just a sampling of what we consider to be the most important for beginning users - as you get
more advanced you will certainly begin to incorporate many more into your projects. If there are components
or custom clusters that you invent and you think they should be included in the next Firey Primer - please
leave us a comment on the Firey website: www.reyexperiments.com
Boolean Switch - Toggle a switch between TRUE / FALSE. (True outputs a 0; False outputs a 1)
Params > Special > Boolean Switch
Boolean Switch DescriponA switch is a special interface object that allows for quick seng of individual Boolean values. You can toggle a
Switch through the Menu, or by double-clicking it. Note that switches only have output grips.
Number Slider - output a specic range of numbers by sliding a dial lef and right
Params > Special > Number Slider
Number Slider DescriponA slider is a special interface object that allows for quick seng of individual numeric values. You can changethe values and properes through the menu, or by double-clicking a slider object. Sliders can be made longeror shorter by dragging the right-most edge le or right. Note that sliders only have output grips.
-
8/7/2019 Firefly Primer 1.003
26/37
Firey Primer - Firey Version 1.003 - Page 26
Value Tracker - Track a collecon of numeric values over me
Value Tracker Descripon
The Value Tracker allows you to visualize incoming sensor data coming from your APins and DPins. If you right-click on the Value Tracker component you can set the Period (width of the graph - from 1 second to 1 hour),and you can set the Update me (this works best if you keep the default seng of Smooth 25ms). This is avery handy tool to use when you are trying understand how your sensors are performing side-by-side.
Params > Special > Value Tracker
Remap Numbers - Remap numbers into a new numeric domain
Remap Numbers Descripon
This component allows to you remap incoming analog sensor data (usually 0-1023) to any numeric domain (forLEDs this is usually 0 To 255, or for servos this is usually 0 To 180).
Input parameters:V (Number) Values to remapS (Domain) Oponal source domain.T (Domain) Target domain
Output parameters:R (Number) Remapped numbers.
Math > Domain > Remap Numbers
Analog values will be variable and
connuous ranging from 0 to 1023
Digital values will spike from 0 to 1
-
8/7/2019 Firefly Primer 1.003
27/37
Firey Primer - Firey Version 1.003 - Page 27
Panel - output parameters of components, or input parameters into a component (text or numbers).
Params > Special > Panel
Panel DescriponPanels can receive their informaon from elsewhere. If you plug an output parameter into a Panel, you can seethe contents of that parameter in real-me. All data in Grasshopper can be viewed in this way.
-
8/7/2019 Firefly Primer 1.003
28/37
In order to complete these tutorials you must have successfully followed all the steps outlinedin the rst secon of this Primer: 1.0 Geng Started > Installaon.Download the tutorial support les at: hp://www.reyexperiments.com
IntroduconFor this rst Firey tutorial you will ulize the three most basic Firey components: Open Port, Duemilanove
Read and Duemilanove Write. To begin with - your Arduino boards USB cable should be connected to your
computer and the green power light should on. The Firey DUEM Firmata should also be uploaded to you
board. Next you will place these three Firey components into your Grasshopper workspace, then you will
prepare them to both read and write data over the USB serial port.
Steps 1 will cover building the actual circuit using an Arduino Board, breadboard, Servo, LEDsSteps 2-4 will cover the process of seng GH/Firey Open Port, Read and WriteSteps 5 will cover linking your GH/Firey sketch to specic geometry
Firey Primer - Firey Version 1.003 - Page 28
3.1 - Tutorial: Basic Reading and Wring
3.0 FIREFLY TUTORIALS
Step 1: Preparing the Arduino Breadboard Circuit
a. LED - Connect the long leg of an LED to Digital Pin 13, and connect the short leg to the second-to-last pin
maked GND. Note that Pin 13 has a built-in resistor. If you aach to any other pin you must use a resistor.
b. STANDARD SERVO - Connect a Stardard Servo to Digital Pin 9. Note that this pin is marked PWM (Pulse
Width Modulaon). The standard Firey build allows you to control servos on Digital Pins 9,10,11 only.
c. LED (PWM) - Connect the long leg o the LED to a resistor and Digital Pin 3, and the other to GND.
d. PHOTORESISTOR - Use a Photoresistor and a 10K resistor to construct the circuit pitured above. Connect the
SIG (signal) to any of your Analog In pins. The circuit above uses Analog Pin 1.
a. LED
+GND
b. STANDARD
SERVO
SIG
5VGND
GND5V SIG
d. PHOTORESISTOR10 K
USB
c. LED (PWM)
+ GND
1 K
-
8/7/2019 Firefly Primer 1.003
29/37
Step 1: Preparing Open Port
a. Drag the Open Port component to the Grasshopper workspace
b. Add a Boolean Toggle [A] to the Open input. When you double-click the Boolean Toggle you will acvate
(True) or deacvate (False) Fireys ability to communicate with your Arduino.
c. Set the Serial Port Number (this should match the port COM# you used when you uploaded the Firmata). We
recommend using a Text Panel [B] (Params > Special > Text Panel) to input your port COM#.
d. Close/Toggle your Boolean to (False) for now. You will open it aer you get everything else set up.
Firey Primer - Firey Version 1.003 - Page 29
Step 2: Preparing Duemilanove Read
a. Drag the Duemilanove Read component to the Grasshopper workspace
b. Add a Boolean Toggle to the Start and Timer inputs. When you double-click the Boolean Toggle you will
acvate (True) or deacvate (False) this components ability to communicate with your Serial Port / Arduino.
c. Create and connect Text Panels (Params > Special > Panel) to each of the Read [D] parameters (APin0
through DPin 7) and the Msg panel on the right side of the component. This will allow you to read the values
coming from sensors conected to the Arduino. In later steps we will connect these directly to specic param-
eters within a Grasshopper model to dynamically control geometries, spaal relaonships, etc.
Above - The Duemilanove Write Component (see descripon on the next page)
PORT
READ WRITE
A
B
C
E
F
G
H
I
J
-
8/7/2019 Firefly Primer 1.003
30/37
Firey Primer - Firey Version 1.003 - Page 30
Step 3: Preparing Duemilanove Write
a. Drag the Duemilanove Write component to the Grasshopper workspace
b. Add a Boolean Toggle to the Start input. When you double-click the Boolean Toggle you will acvate (True)
or deacvate (False) communicaon with your Serial Port / Arduino.
c. Create and connect Text Panels (Params > Special > Panel) to the Outand Msg[J] parameters. The Out
parameter is essenally a diagnosc tool that allows you to see what data is actually being sent through the
Serial Port to the Arduino board. This string of comma-seperated numbers is then seperated in the Arduino
Firmata (.pde) sketch and is used to control specic Arduino pins.
d. Add three unique Number Sliders to all the components on the le side of the component. Refer to the
diagram above to locate these three slider types:
[E] 0-1 Slider (Slider Type: Integer; Lower Value: 0 and Upper Value: 1)
[F] Servo Slider (Slider Type: Integer; Lower Value: 0 and Upper Value: 179)
[G] LED Slider (Slider Type: Integer; Lower Value: 0 and Upper Value: 255)
Note on DPins marked with a star* [H]: The DPin11*, DPin10*, DPin9*, DPin6*, DPin5*, Dpin3* parameters
have a PWM opon (Pulse Width Modulaon). If you right click over the DPin parameter text you will see
an opon to select PWM [I]. If PWM is selected, Pins 5,6,7 can be used to fade LEDS, and Pins 9,10,11 can
control Servo Motors. These PWM pins correspond the the PWM pins indicated on the Arduino Duemilanoveboard. If the PWM buon is not checked, then the integer (0) will send a LOW value and a (1) will send a HIGH
value. If the PWM buon is checked, then any PWM value between 0-255 can be sent to the specied pin.
Step 4: Connect Firey to points in the Rhino File
The example (below) creates a real-me 3D map of your Analog Inputs and draws a line accross them. We
rst connect the 6 outputs from the Duemilanove Read component to the Z input of a Point component
[A]. We then use a Series Component to input (0,5,10,15,20,25) into the Y input [B]. A Pline [C] is used to
connect these points and create a dynamically updang line in space. We then add another corresponding
Point component. These points will be xed to ground plane. Again, we use the Series Component to input
(0,5,10,15,20,25) into the Y input [D]. The nal step is to connect both sets of points with vercal lines [E].
Figure 1. The Rhino modeling window (le) and Grasshopper Interface (right)
C
A
BC
DE
E
-
8/7/2019 Firefly Primer 1.003
31/37
Firey Primer - Firey Version 1.003 - Page 31
Preparing the Pachube Read Component
Step 1. Setup a pachube account and nd your API Key
In order to begin monitoring various sensor feeds from pachube.com, you will rst need to create an account.
Begin by going to the URL: hp://www.pachube.com and click on the Sign Up link at the top of the page. Aer
providing a unique user name, e-mail address, and password you will be directed back to the pachube home
page.
When logged in, you will noce a grey menu bar at the top of the page with various links to manage your ac-count. On the far right hand side of this menu, you will nd a link to manage My Sengs. Aer clicking on
this link, you will be directed to your account sengs page where you will nd your API Key.
Some Pachube API methods dont require authencaon (primarily those involving syndicaon and those that
contain no real-me data, for example 24-hour history CSV and graphs). This enables them to be used in third-
party websites or mashups that require public access.
However, most real me data methods do require a Pachube API key. Your API Key is your personal idenca-
on code that will be required to access many real-me feeds on pachube.
Note: Since your API Key is your personal idener on pachube, it is crucial that you keep this code private. Do
not share this informaon with others and make sure you do not share Grasshopper les which may contain
your key inside the document.
Now that we have setup an account, drag and drop a Text Panel onto the canvas. Copy and paste your API Key
(from your account sengs) into the Text Panel. Connect the output of this Text Panel to the API Key input
node of the Pachube Read component.
3.2 - Tutorial: Pachube Read
My Sengs
-
8/7/2019 Firefly Primer 1.003
32/37
Firey Primer - Firey Version 1.003 - Page 32
Step 2. Find a Pachube feed
There are several dierent methods for accessing the thousands of live realme sensor feeds that are updated
to the pachube servers every minute. Map View allows users to nd a feed based on geolocaon. Tags are
color coded based on categories: agriculture, buildings, devices, energy, environment, transport, and other.
List View gives users a text based version of all online feeds. Finally, Cloud View provides a list of all feed tags
and scales the text of each tag based on the number of occurrences of each tag (larger fonts indicate the
greater number of occurrences of a given tag). We can also Search Feeds or Tags by using the search box at
the top of the page.
For this tutorial, we will use a feed created by the Naonal Wind Technology Center in Denver, CO. Type the
following web address into your browser: hp://www.pachube.com/feeds/1197 . The readings that are dis-
played are derived from instruments mounted on or near an 82 meter (270 foot) meteorological tower located
at 39 54 38.34 N and 105 14 5.28 W (datum WGS84) with its base at an elevaon of 1855 meters (6085
feet) above mean sea level.
Each feeds page (e.g. hp://www.pachube.com/feeds/1197) lists three URLs for accessing realme data in
various formats: CSV, JSON & EEML (an XML format). The XML le format contains the most descripve infor-
maon about a sensor feed (including metadata), while the CSV format contains the least. Note: The Grass-
hopper Pachube Read component can only access XML or CSV le formats.
By retrieving data from one of these URLs you will access the remote environments most recent datastream
values and metadata (up to a resoluon of 5 seconds) and can use this data to control, trigger, modulate or
otherwise aect your device, building, environment, actuator, etc.
Each feed page has a data stream link labeled embed, history, triggers which reveal a drawer with a number
of URLs and code snippets:
-
8/7/2019 Firefly Primer 1.003
33/37
Firey Primer - Firey Version 1.003 - Page 33
URL: retrieves the realme value of that datastream alone. We can add the extension .xml or .csv to this URL
address to isolate the current value of a single sensor data stream.
History: quick view of the last 24 hours of data in 15-minute increments, CSV format, no mestamps (total of
96 datapoints). This URL address can only be accessed by adding the .csv le extension.
Archive: complete datastream history in 15-minute increments, CSV format, includes mestamps. This URL
address can only be accessed by adding the .csv le extension.
PNG graph: HTML code snippet for embedding a congurable PNG graph of the datastream. Currently the
PNG graphs cannot be imported into Grasshopper.
Zoom graph: HTML code snippet for embedding a zoomable graph of the last 30 days of data. Currently the
Zoom graph cannot be imported into Grasshopper.
Step 3. Seng up a Pachube Read Component in Grasshopper
-
8/7/2019 Firefly Primer 1.003
34/37
Firey Primer - Firey Version 1.003 - Page 34
5.00 ADDITIONAL RESOURCES
5.1 Hardware Suppliers and Related Soware
LITTLE BITS OF EVERYTHING
Adafruit[Based in NYC - Arduinos, Sensors, Wireless, DIY Central, great range of things ...]Jameco [outside SF in Belmont, CA - Huge selecon of Electronics]
RobotShop [Huge selecon of robot-based electronics, SMAs, Motors, Sensors]
Al Lashers Electronics [Located in Berkeley, CA -1734 University Ave (510)843-5915]
Electronics Plus [San Rafael, CA - (415) 457-0466]
Frys [1077 East Arques Ave. Sunnyvale, CA, 408.617.1300 - also in Palo Alto, San Jose and more]
Marlin P. Jones [Huge Supplier including Power Supplies, LED, Connectors, etc]
ARDUINO + GENERAL ELECTRONICS SUPPLIERS
Arduino [mothership: great links to everything Arduino]
Sparkfun [sensors, hardware, kits ...]
MakerShed[sensors, hardware, kits ...]LiquidWare [lots of everything]
POWER SUPPLIES
PowerSupplyOne [Huge Selecon of Power Supplies]
SENSORS
Acroname [Sharp IR Sensor Source - we use the GP2Y0A02YK]
Making Things [Great range of Sensors - highly recommend]
Sparkfun Sensors [many avours] Sensor Kit by Sparkfun
LadyAda [Bits and Pieces; Sensors and Arduinos and much more]
SERVOS
Servocity[Great Selecon of Servos and Supplies]
LEDS
SuperBrightLEDS.com [Single LEDs or mulple strings, all types, good quality]
GOOD ARDUINO BASED STARTER KITS
+ Minimum >Arduino Budget Packor equal [includes Arduino Duemilanove Atmega328, and a small selecon
of starter components]
+ Mid-Range >Arduino Starter Packor equal [includes Arduino Duemilanove Atmega328, Protoboard, and agood selecon of starter components]
+ High-End Recommended > Arduino Experimentaon Kit v1.0or equal [includes Arduino Duemilanove At-
mega328, Prototyping bundles, and a great selecon of starter components]
Other misc. tools that you might consider purchasing: a soldering iron and solder, wire strippers, helping
hands, digital mulmeter, etc. Here is a great linkfor info on the best tools to purchase.
[Note: These are working lists. Please e-mail us a related links and well consider adding them to our lists]
http://www.adafruit.com/http://www.jameco.com/http://www.robotshop.com/http://allashers.com/http://www.electronicplus.com/http://www.frys.com/http://www.mpja.com/http://arduino.cc/en/Main/Hardwarehttp://www.sparkfun.com/commerce/advanced_search_result.php?keywords=Arduino&x=0&y=0&search_section=productshttp://www.makershed.com/SearchResults.asp?Cat=46http://www.liquidware.com/http://powersupplyone.com/http://www.acroname.com/robotics/parts/c_Sensors.htmlhttp://www.makingthings.com/store/sensorshttp://www.sparkfun.com/commerce/categories.php?c=23http://www.sparkfun.com/commerce/product_info.php?products_id=9383http://www.adafruit.com/index.php?main_page=index&cPath=17http://www.servocity.com/http://www.superbrightleds.com/http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=193http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=68http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=170http://www.adafruit.com/index.php?main_page=product_info&cPath=8&products_id=136http://www.adafruit.com/index.php?main_page=product_info&cPath=8&products_id=136http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=170http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=68http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=193http://www.superbrightleds.com/http://www.servocity.com/http://www.adafruit.com/index.php?main_page=index&cPath=17http://www.sparkfun.com/commerce/product_info.php?products_id=9383http://www.sparkfun.com/commerce/categories.php?c=23http://www.makingthings.com/store/sensorshttp://www.acroname.com/robotics/parts/c_Sensors.htmlhttp://powersupplyone.com/http://www.liquidware.com/http://www.makershed.com/SearchResults.asp?Cat=46http://www.sparkfun.com/commerce/advanced_search_result.php?keywords=Arduino&x=0&y=0&search_section=productshttp://arduino.cc/en/Main/Hardwarehttp://www.mpja.com/http://www.frys.com/http://www.electronicplus.com/http://allashers.com/http://www.robotshop.com/http://www.jameco.com/http://www.adafruit.com/ -
8/7/2019 Firefly Primer 1.003
35/37
Firey Primer - Firey Version 1.003 - Page 35
5.3 Related Soware Projects
Grasshopper and GH Plug-in RelatedGrasshopper Home [plug-in for Rhino; Created by David Ruen and augmented by many others]
Kangaroo [Physics Engine for simulang materials]Geometry Gym [Geometry toolkit]ModeLab Tools [Many helpful GH tools ]Geco [connect GH with Ecotect]Weaverbird[smoothing, modifying and preparing meshes]For a complete list visit: hp://www.grasshopper3d.com/page/addons-for-grasshopper
Arduino RelatedArduino[obviously, but this is a key soware especially to hack the Firey Firmata!]
Processing [Arduino is based on Processing by Casey Reas and Ben Fry]
Modkit[Drag and Drop programming for Arduino]
General Related ProjectsUbimash [Uses UDP to publish and subscribe to server data; used with GC and others]
NetLabToolkit[Tools for tangible interacon using Arduino / Flash Widgets]
Fritzing [Draw, Visualize and Output Circuits Diagrams; Arduino to Breadboard - highly recommended]
5.2 Related Tech Links
LEDSLED Circuitry Tutorial: hp://www.theledlight.com/ledcircuits.html
LED Calculator:hp://www.led-calculator.com/
Instructableshp://www.instructables.com/
Lady Ada Tutorials hp://www.adafruit.com/index.php?main_page=tutorials
SERVOS
Hacking Servos for connuous rotaon: hp://www.sealerobocs.org/guide/servohack.html
[Note: These are working lists. Please e-mail us a related links and well consider adding them to our lists]
http://www.grasshopper3d.com/http://groups.google.co.uk/group/kangaroophysicshttp://geometrygym.blogspot.com/http://modelab.nu/http://www.grasshopper3d.com/profiles/blogs/geco-gh2ecotect-beta-releasehttp://www.giuliopiacentino.com/weaverbird/http://www.grasshopper3d.com/page/addons-for-grasshopperhttp://www.grasshopper3d.com/page/addons-for-grasshopperhttp://www.arduino.cc/http://processing.org/http://www.modk.it/softwarehttp://%20http//ubimash.com/http://www.netlabtoolkit.org/http://fritzing.org/http://www.theledlight.com/ledcircuits.htmlhttp://www.led-calculator.com/http://www.instructables.com/http://www.adafruit.com/index.php?main_page=tutorialshttp://www.seattlerobotics.org/guide/servohack.htmlhttp://www.seattlerobotics.org/guide/servohack.htmlhttp://www.adafruit.com/index.php?main_page=tutorialshttp://www.instructables.com/http://www.led-calculator.com/http://www.theledlight.com/ledcircuits.htmlhttp://fritzing.org/http://www.netlabtoolkit.org/http://%20http//ubimash.com/http://www.modk.it/softwarehttp://processing.org/http://www.arduino.cc/http://www.grasshopper3d.com/page/addons-for-grasshopperhttp://www.giuliopiacentino.com/weaverbird/http://www.grasshopper3d.com/profiles/blogs/geco-gh2ecotect-beta-releasehttp://modelab.nu/http://geometrygym.blogspot.com/http://groups.google.co.uk/group/kangaroophysicshttp://www.grasshopper3d.com/ -
8/7/2019 Firefly Primer 1.003
36/37
Firey Primer - Firey Version 1.003 - Page 36
6.00 FIREFLY COMMUNITY - Share, Comment, Help
Firey is currently hosted at: hp://www.reyexperiments.com We encourage you to create
discussions related to Firey on this site.
There is also a thriving community of Arduino related enthusiasts here:
hp://www.arduino.cc/cgi-bin/yabb2/YaBB.pl
We encourage you to e-mail us comments, correcons and suggesons:
5.4 Related Books and ReadingFox, Michael and Kemp, Miles. Interacve Architecture. Princeton Architectural Press, 2009. (Amazon)
Nobel, Joshua. Programming Interacvity: A Designers Guide to Processing, Arduino, and Openframeworks.OReilly Media, 2009. (Amazon)
Pla, Charles. Make: Electronics (Learning Through Discovery Series). Make Publishers, 2009. (Amazon)
Banzi, Massimo. Geng Started with Arduino. Make Publishers, 2008. (Amazon)Reas and Fry. Processing - Programming Handbook for Designers. MIT Press. (Amazon)Igoe and OSullivan. Physical Compung: Sensing and Controlling the Physical World with Computers. CourseTech CPR. (Amazon)Igoe, Tom. Making Things Talk. OReilly Press. (Amazon)
Image courtesy of modelab.nu/
http://www.grasshopper3d.com/profile/firefly.http://www.arduino.cc/cgi-bin/yabb2/YaBB.plhttp://www.amazon.com/Interactive-Architecture-Michael-Fox/dp/1568988362http://www.amazon.com/Programming-Interactivity-Designers-Processing-Openframeworks/dp/0596154143/ref=pd_sim_b_4http://www.amazon.com/Programming-Interactivity-Designers-Processing-Openframeworks/dp/0596154143/ref=pd_sim_b_4http://www.amazon.com/MAKE-Electronics-Learning-Through-Discovery/dp/0596153740/ref=pd_sim_b_8http://www.amazon.com/Getting-Started-Arduino-Make-Projects/dp/0596155514/ref=pd_sim_b_1http://www.amazon.com/Physical-Computing-Sensing-Controlling-Computers/dp/159200346X/ref=pd_sim_b_5http://www.amazon.com/Physical-Computing-Sensing-Controlling-Computers/dp/159200346X/ref=pd_sim_b_5http://www.amazon.com/Making-Things-Talk-Practical-Connecting/dp/0596510519/ref=pd_sim_b_6http://www.amazon.com/Making-Things-Talk-Practical-Connecting/dp/0596510519/ref=pd_sim_b_6http://www.amazon.com/Physical-Computing-Sensing-Controlling-Computers/dp/159200346X/ref=pd_sim_b_5http://www.amazon.com/Getting-Started-Arduino-Make-Projects/dp/0596155514/ref=pd_sim_b_1http://www.amazon.com/MAKE-Electronics-Learning-Through-Discovery/dp/0596153740/ref=pd_sim_b_8http://www.amazon.com/Programming-Interactivity-Designers-Processing-Openframeworks/dp/0596154143/ref=pd_sim_b_4http://www.amazon.com/Interactive-Architecture-Michael-Fox/dp/1568988362http://www.arduino.cc/cgi-bin/yabb2/YaBB.plhttp://www.grasshopper3d.com/profile/firefly. -
8/7/2019 Firefly Primer 1.003
37/37
utureCiesLab-TheAuroraProject
thspecialthankstoC.Norman/T.
Kelley)